Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich externe Befehlsausgaben im Python-Modul „subprocess' effizient weiterleiten?

Wie kann ich externe Befehlsausgaben im Python-Modul „subprocess' effizient weiterleiten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 16:17:14365Durchsuche

How Can I Efficiently Pipe External Command Outputs in Python's `subprocess` Module?

Externe Befehle mit Pipes mithilfe von Unterprozessen ausführen

Beim Arbeiten mit dem Unterprozessmodul kann es erforderlich sein, Pipes zu verwenden, um die Ausgabe eines externen Befehls als Eingabe zu verbinden zu einem anderen. Um dies zu erreichen, können Sie den Parameter „shell=True“ in der Funktion „subprocess.check_output()“ verwenden.

Aus Sicherheitsgründen ist es jedoch wichtig, bei der Verwendung von „shell=True“ mit Vorsicht vorzugehen. Stattdessen wird empfohlen, für jeden Befehl separate Prozesse zu erstellen und die Ausgabe entsprechend weiterzuleiten.

Betrachten Sie zur weiteren Erläuterung das folgende Beispiel:

ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)
output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)
ps.wait()

In diesem Szenario lautet der Befehl ps ausgeführt und seine Ausgabe wird an den grep-Befehl weitergeleitet. Die resultierende Ausgabe von grep wird dann in der Variablen „output“ gespeichert.

Alternativ, wenn „shell=True“ nicht gewünscht ist, können Sie str.find verwenden, um das gleiche Ergebnis zu erzielen:

output = subprocess.check_output(('ps', '-A'))
process_found = 'process_name' in output

Das obige ist der detaillierte Inhalt vonWie kann ich externe Befehlsausgaben im Python-Modul „subprocess' effizient weiterleiten?. 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