У меня есть подпроцесс python, из которого я пытаюсь читать потоки вывода и ошибок. В настоящее время у меня это работает, но я могу читать только stderr
после того, как я закончил читать с stdout
. Вот как это выглядит:
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout_iterator = iter(process.stdout.readline, b"")
stderr_iterator = iter(process.stderr.readline, b"")
for line in stdout_iterator:
# Do stuff with line
print line
for line in stderr_iterator:
# Do stuff with line
print line
Как вы можете видеть, цикл stderr
for не может начинаться до тех пор, пока цикл цикла stdout
не завершится. Как я могу изменить это, чтобы иметь возможность читать из обоих в правильном порядке, в которые входят строки?
Чтобы уточнить: Мне все еще нужно узнать, появилась ли строка из stdout
или stderr
, потому что в моем коде будут обрабатываться по-разному.