Unterprozessausgabe erfassen [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Streaming-Eingabe von subprocess.communicate () lesen 6 answers

Ich 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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage