Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich eine Live-Ausgabe von einem Unterprozessbefehl in Python erhalten?

Wie kann ich eine Live-Ausgabe von einem Unterprozessbefehl in Python erhalten?

DDD
Freigeben: 2024-12-03 08:52:09
Original
366 Leute haben es durchsucht

How Can I Get Live Output from a Subprocess Command in Python?

Live-Ausgabe eines Unterprozessbefehls

In Python können Sie die Ausgabe eines Unterprozessbefehls erfassen und gleichzeitig eine Live-Streaming-Ausgabe mit erzeugen die folgenden Ansätze:

Verwendung eines Iterator

import subprocess
import sys

p = subprocess.Popen(['command'], stdout=subprocess.PIPE)
for line in iter(lambda: p.stdout.readline(1), ''):
    sys.stdout.buffer.write(line)
Nach dem Login kopieren

Verwendung eines FileWriter und FileReader

import io
import time
import subprocess
import sys

log = 'test.log'
with io.open(log, 'wb') as writer, io.open(log, 'rb', 1) as reader:
    p = subprocess.Popen(['command'], stdout=writer)
    while p.poll() is None:
        sys.stdout.write(reader.read())
        time.sleep(0.5)
    # Read the remaining
    sys.stdout.write(reader.read())
Nach dem Login kopieren

Originalcode-Refactoring

In Ihrem Mit dem Originalcode können Sie die Live-Ausgabe nach dem Erstellen eines Unterprozesses als erfassen folgt:

ret_val = subprocess.Popen(run_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True )
while not ret_val.poll():
    log_file.flush()
    for line in iter(lambda: ret_val.stdout.readline(1), ''):
        if line:
            print(line)
            log_file.write(line.decode())
Nach dem Login kopieren

Mit dieser Methode können Sie sowohl die stdout- als auch die stderr-Streams erfassen und die Live-Ausgabe drucken, während Sie sie gleichzeitig in eine Protokolldatei schreiben.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Live-Ausgabe von einem Unterprozessbefehl in Python erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage