Heim > Backend-Entwicklung > Python-Tutorial > Wie übergebe ich Strings an „subprocess.Popen' und „subprocess.run' in Python?

Wie übergebe ich Strings an „subprocess.Popen' und „subprocess.run' in Python?

Mary-Kate Olsen
Freigeben: 2024-12-06 07:50:11
Original
1069 Leute haben es durchsucht

How to Pass Strings to `subprocess.Popen` and `subprocess.run` in Python?

Übergabe von Strings an subprocess.Popen über stdin

Um einen String an subprocess.Popen zu übergeben, ist es wichtig, stdin= anzugeben PIPE im Funktionsaufruf. Dadurch kann das stdin-Attribut des Popen-Objekts ein dateiähnliches Objekt sein, das Daten aus einer Zeichenfolge empfangen kann.

Um dies zu demonstrieren, könnte das folgende Beispiel implementiert werden:

from subprocess import Popen, PIPE, STDOUT

p = Popen(['grep', 'f'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)    
grep_stdout = p.communicate(input=b'one\ntwo\nthree\nfour\nfive\nsix\n')[0]
print(grep_stdout.decode())
# -> four
# -> five
# ->
Nach dem Login kopieren

Durch die Bereitstellung von stdin=PIPE kann die Eingabezeichenfolge über stdin.communicate() an den grep-Prozess übergeben werden, was die Verarbeitung der Eingabedaten und den Abruf der Befehle ermöglicht Ausgabe.

Python 3.5 und spätere Versionen bieten die Funktion subprocess.run, die den Prozess der Übergabe von Zeichenfolgen an externe Befehle und des Abrufens ihrer Ausgaben vereinfacht. Dies lässt sich wie folgt veranschaulichen:

#!/usr/bin/env python3
from subprocess import run, PIPE

p = run(['grep', 'f'], stdout=PIPE,
        input='one\ntwo\nthree\nfour\nfive\nsix\n', encoding='ascii')
print(p.returncode)
# -> 0
print(p.stdout)
# -> four
# -> five
# -> 
Nach dem Login kopieren

Durch die Verwendung von subprocess.run kann die Eingabezeichenfolge direkt als Argument an den Eingabeparameter übergeben werden, was die Datenkommunikation einfacher macht.

Das obige ist der detaillierte Inhalt vonWie übergebe ich Strings an „subprocess.Popen' und „subprocess.run' in Python?. 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