preload
мая 28

Появилась у меня потребность запустить внешнюю программу из питона. Некоторое время порыскал в документации в поисках чего-нибудь, похожего на обратные кавычки, пока не наткнулся на модуль subprocess. Там даны следующие примеры, касающиеся, моего случая:

Замена обратных кавычек (output=`mycmd myarg`):

output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]

Замена пайпов (output=`dmesg | grep hda`):

p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]

Замена os.system() (sts = os.system(«mycmd» + » myarg»)), которая мне не подходила, потому что она не возвращает вывод программы, а передает его на стадартный вывод:

p = Popen("mycmd" + " myarg", shell=True)
sts = os.waitpid(p.pid, 0)

В общем, RTFM. Утром, в обед и вечером.

Связанные записи

Ваш отзыв