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
Freigeben: 2024-12-22 16:17:14
Original
386 Leute haben es durchsucht

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()
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage