дублирует вывод из подпроцесса popen, чтобы он печатал и сохранял в PIPE? - PullRequest
0 голосов
/ 26 мая 2019

Я хочу запустить subprocess.Popen('echo 1; sleep 1; echo 1', shell=True, stdout=?) так, чтобы вывод отображался (во время выполнения), а также я мог сохранить его в ТРУБЕ или в файл.

До сих пор я бегал с proc = subprocess.Popen('echo 1; sleep 1; echo 1', shell=True, stdout=PIPE, stderr=PIPE), давая мне второе требование, а затем я печатал бы результат out, err = proc.communicate(), но использование communicate - это блокировка, и поэтому, если Popen занимает много времени, Я не могу показать вывод, и это неприемлемо.

Можно ли как-нибудь оставить поле stdout= пустым (для включения вывода на консоль), а также скопировать вывод в ТРУБУ?

Обновление . Это не то же самое, что Python Popen: одновременная запись в стандартный вывод и файл журнала , потому что я хочу иметь возможность доступа к выводу результатов во время выполнения, и в предложенном решении предлагается доступ к proc. стандартный вывод, блокирующий до конца цикла.

...