Mit dem Subprozess-Modul (Python 2.7), ich führe einen Befehl und versuchen, seine Ausgabe zu verarbeiten, wie es läuft.Python - Ausgabe von lang laufenden Subprozess lesen
Ich habe Code wie folgt aus:
process = subprocess.Popen(
['udevadm', 'monitor', '--subsystem=usb', '--property'],
stdout=subprocess.PIPE)
for line in iter(process.stdout.readline, ''):
print(line)
jedoch wird der Ausgang nur gedruckt, nachdem ich Strg + C, auch wenn ich sys.stdout.flush()
nach der print-Anweisung hinzufügen.
Warum passiert das und wie kann ich die Ausgabe von diesem Prozess live streamen?
Bemerkenswert ist, dass dieser Befehl udevadm monitor
nicht beendet werden soll, so dass ich nicht einfach warten kann, bis der Prozess beendet und seine Ausgabe auf einmal verarbeitet.
Ich fand live output from subprocess command aber der Ansatz in der angenommenen Antwort löste mein Problem nicht.
siehe [die Links in den Absatz, der mit beginnt: "Wenn subprocess' stdout verwendet einen Block Pufferung"] (http://stackoverflow.com/a/17698359/ 4279) – jfs