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
Mary-Kate OlsenOriginal
2024-12-06 07:50:111101Durchsuche

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
# ->

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
# -> 

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!

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