Python Lesen von Teilprozess stdout und stderr getrennt, während die Erhaltung der Ordnung

Habe ich ein python-subprocess, dass ich versuche zu Lesen, - Ausgabe und Fehler-Ströme aus. Derzeit habe ich es zu arbeiten, aber ich bin nur in der Lage zu Lesen, aus stderr nachdem ich fertig sind der Lektüre von stdout. Hier ist, wie es aussieht:

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

Wie Sie sehen können, die stderr for-Schleife kann nicht gestartet werden, bis die stdout Schleife abgeschlossen. Wie kann ich ändern, diese Lesen zu können, sowohl in der richtigen Reihenfolge die Linien kommen?

Zu klären: ich noch brauchen, um in der Lage zu sagen, ob eine Zeile kam von stdout oder stderr weil Sie unterschiedlich behandelt werden in meinem code.

InformationsquelleAutor Luke Sapan | 2015-08-05

Schreibe einen Kommentar