Python читает из подпроцесса stdout и stderr отдельно, сохраняя порядок
У меня есть подпроцесс 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
цикл не может начаться, покаstdout
цикл завершается. Как я могу изменить это, чтобы иметь возможность читать из обоих в правильном порядке строки?
Чтобы уточнить: Мне все еще нужно знать, пришла ли строкаstdout
или жеstderr
потому что они будут рассматриваться по-разному в моем коде.