Как использовать подпроцесс для захвата вывода и разрешить вывод на печать на экран? - PullRequest
2 голосов
/ 30 января 2020

В моем скрипте Python 3 я запускаю другую программу, которая обычно выводит информацию о том, что она делает, и не выполняет вывод с помощью PIPE, как показано ниже:

proc = subprocess.run("program")

Но когда я фиксирую вывод для сохранения в текстовом файле с:

proc = subprocess.run("program", stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

, он больше не распечатывается, так как подпроцесс работает, но захватывает вывод для сохранение в текстовый файл. Есть ли способ заставить программу печатать на экран и фиксировать этот вывод. Я прочитал подпроцесс, но я не могу найти способ сделать это.

1 Ответ

2 голосов
/ 30 января 2020

Есть ли способ заставить программу печатать на экране и фиксировать этот вывод.

Захватите его и напечатайте самостоятельно.

Если вы хотите напечатать при выводе используйте subprocess.Popen, тогда stdout и stderr будут потоками , вы можете прочитать их содержимое в al oop и распечатать его по мере получения (хотя остерегайтесь, что стандартный вывод процесса, скорее всего, будет полностью буферизован , а stderr не буферизован).

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