перенаправление стандартного вывода в вызывающий процесс - PullRequest
1 голос
/ 22 декабря 2009

Я не эксперт по Bash, поэтому терпите меня

У меня есть сценарий python, который запускает другие процессы, которые затем отправляют сообщения журнала на стандартный вывод.
какую команду bash я бы использовал для перенаправления stdout этих дочерних процессов обратно на stdout родительского процесса (скрипт python, запускающий процессы)?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 22 декабря 2009

Если вы просто хотите захватить выходные данные дочерних процессов в вашем скрипте Python, лучший способ сделать это - использовать модуль subprocess:

import subprocess

p = subprocess.Popen(['/bin/ls', '-l'], stdout=subprocess.PIPE)
(out, _) = p.communicate()
print "Output:", out
1 голос
/ 22 декабря 2009

Я предполагаю, что вы используете os.system("command") для выполнения ваших скриптов. Этот метод только выполняет команду и дает вам возвращаемое значение программы, а НЕ это стандартный вывод. Вам нужен модуль подпроцесс . Например:

import subprocess

proc = subprocess.Popen(['command', 'option 1', 'option 2'], stdout=subprocess.PIPE)
output = proc.communicate()[0] #for stdout. Use proc.communicate[1] for stderr

При просмотре вашего комментария ваше решение простое:

subprocess.Popen('command option 1 option 2', shell=True)

Примечание: команда должна быть передана в виде строки. Последовательность не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...