Различают stdout и stderr в подпроцессе - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу использовать подпроцесс для вызова других py-файлов и получения вывода. Цвета, которые они выводят, одинаковы. Как я могу различить stdout и stderr в подпроцессе?

run.py

def run():
    for i in range(3):
        print('Processing {}.'.format(i))
        time.sleep(1)
    print(1/0)
run()

main.py

import subprocess
import sys

def byte2str(b):
    return str(b, encoding='utf-8')

if __name__ == '__main__':
    cmd = [sys.executable, 'temp/run.py']
    p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

    while p.poll() is None:
        line = p.stdout.readline()
        if line:
            print(byte2str(line), end='')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...