Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die Prozessausgabe von „subprocess.call()' in Python abrufen?

Wie kann ich die Prozessausgabe von „subprocess.call()' in Python abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-30 04:26:17113Durchsuche

How Can I Retrieve Process Output from `subprocess.call()` in Python?

Abrufen der Prozessausgabe von subprocess.call()

In Python-Versionen vor 2.7 das Abrufen der Ausgabe von einem Prozess, der mit subprocess aufgerufen wurde. call() kann eine Herausforderung sein. Die Übergabe eines StringIO.StringIO-Objekts an das stdout-Argument löst einen Fehler aus, da in StringIO-Objekten ein „fileno“-Attribut fehlt.

Lösung

Für Python-Versionen 2.7 und darüber hinaus bietet die Funktion subprocess.check_output eine unkomplizierte Lösung. Es kombiniert die Ausführung eines Unterprozesses mit der Erfassung und Rückgabe seiner Standardausgabe als Zeichenfolge.

Zum Beispiel (unter Linux getestet):

import subprocess

output = subprocess.check_output(['ping', '-c', '1', '8.8.8.8'])

print(output)

Beachten Sie, dass der Ping-Befehl das verwendet Linux-Notation (-c für count). Ändern Sie es für Windows in -n.

Weitere Einzelheiten finden Sie in der ausführlicheren Antwort in diesem [anderen Beitrag](https://stackoverflow.com/a/5647266/6214952).

Das obige ist der detaillierte Inhalt vonWie kann ich die Prozessausgabe von „subprocess.call()' in Python abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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