Heim > Artikel > Backend-Entwicklung > Wie kann ich in Python Unterprozessausgaben gleichzeitig in das Terminal und in Dateien schreiben?
Prozessausgabe gleichzeitig mit Pythons Unterprozess in Terminal und Dateien schreiben
Beim Ausführen mehrerer ausführbarer Dateien mit subprocess.call() ist es wünschenswert, dies zu haben Die Ausgabe wird sowohl im Terminal als auch in einer bestimmten Datei angezeigt. Das Standardverhalten erlaubt jedoch nur die Ausgabeumleitung entweder zur Datei oder zum Terminal.
Um diese Einschränkung zu überwinden, sollten Sie Popen direkt in Verbindung mit dem Argument stdout=PIPE verwenden. Dadurch können Sie die Ausgabe aus dem stdout-Attribut des Popen-Objekts lesen.
Um das gewünschte Verhalten zu erreichen, führen Sie die folgenden Schritte aus:
Hier ist ein Beispiel für die Verwendung dieser Funktionen:
<code class="python">import sys from subprocess import Popen, PIPE from threading import Thread def tee(infile, *files): ... def teed_call(cmd_args, **kwargs): ... outf, errf = open("out.txt", "wb"), open("err.txt", "wb") assert not teed_call(["cat", __file__], stdout=None, stderr=errf) assert not teed_call(["echo", "abc"], stdout=outf, stderr=errf, bufsize=0) assert teed_call(["gcc", "a b"], close_fds=True, stdout=outf, stderr=errf)</code>
Dieser Code schreibt die Ausgabe effektiv in beide die Dateien und das Terminal gleichzeitig für jeden ausgeführten Befehl.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python Unterprozessausgaben gleichzeitig in das Terminal und in Dateien schreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!