Python читает из подпроцесса stdout и stderr отдельно, сохраняя порядокPython

Программы на Python
Ответить
Anonymous
 Python читает из подпроцесса stdout и stderr отдельно, сохраняя порядок

Сообщение Anonymous »

У меня есть подпроцесс Python, из которого я пытаюсь прочитать потоки вывода и ошибок. В настоящее время он у меня работает, но я могу читать из stderr только после того, как закончу чтение из stderr. Вот как это выглядит:

Код: Выделить всё

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. Как я могу изменить это, чтобы иметь возможность читать обе строки в правильном порядке?

Чтобы уточнить: мне все еще нужно иметь возможность определить, пришла ли строка из стандартного вывода или stderr, поскольку в моем коде они будут обрабатываться по-разному.

Подробнее здесь: https://stackoverflow.com/questions/318 ... ving-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»