Unterprozessausgabe erfassen [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Streaming-Eingabe von subprocess.communicate () lesen 6 answersIch habe gelernt, dass ich beim Ausführen von Befehlen in Python einen Unterprozess verwenden sollte. Ich versuche, eine Datei über ffmpeg zu kodieren und die Programmausgabe zu beobachten, bis die Datei fertig ist. Ffmpeg protokolliert den Fortschritt in stderr.
Wenn ich so etwas versuche:
child = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE)
complete = False
while not complete:
stderr = child.communicate()
# Get progress
print "Progress here later"
if child.poll() is not None:
complete = True
time.sleep(2)
das Programm wird nach dem Aufruf von child.communicate () nicht fortgesetzt und wartet auf den Abschluss des Befehls. Gibt es eine andere Möglichkeit, der Ausgabe zu folgen?