Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die Ausgabe eines subprocess.Popen-Aufrufs in Python effizient erfassen und speichern?

Wie kann ich die Ausgabe eines subprocess.Popen-Aufrufs in Python effizient erfassen und speichern?

Susan Sarandon
Susan SarandonOriginal
2024-12-07 04:36:19175Durchsuche

How Can I Efficiently Capture and Store the Output of a subprocess.Popen Call in Python?

Ausgabe des Unterprozesses.Popen-Aufrufs in einem String speichern

Beim Versuch, einen Systemaufruf mit Python durchzuführen, kann eine Speicherung erforderlich sein die Ausgabe zur späteren Bearbeitung. Die Verwendung von subprocess.Popen allein bietet jedoch keine einfache Methode zum Erfassen der Ausgabe innerhalb einer Zeichenfolge.

Alternative Ansätze

Um dieses Problem zu beheben, ziehen Sie die folgenden Optionen in Betracht :

Python 2.7 oder Python 3

Verwenden Sie die Funktion subprocess.check_output(), die die Befehlsausführung und Ausgabeerfassung vereinfacht:

from subprocess import check_output
out = check_output(["ntpq", "-p"])

Python 2.4-2.6

Verwenden Sie die Kommunikationsmethode des Popen Objekt:

import subprocess
p = subprocess.Popen(["ntpq", "-p"], stdout=subprocess.PIPE)
out, err = p.communicate()

In diesem Fall enthält out die gewünschte Ausgabe.

Hinweis zum Befehlsaufruf

Geben Sie bei Verwendung von Popen die an Befehl als Liste mit dem Befehl und den Optionen, z. B. ["ntpq", "-p"]. Dadurch wird sichergestellt, dass der Befehl korrekt interpretiert wird, da Popen nicht die Shell zur Befehlsausführung verwendet.

Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabe eines subprocess.Popen-Aufrufs in Python effizient erfassen und speichern?. 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