Wie die subprocess Popen.kommunizieren () - Methode?
Ich versuche, die standard-Ausgabe von einem bash-Befehl als string in Python. Folgende Popen Dokumentation, die ich ausprobiert habe:
import subprocess
p = subprocess.Popen(["echo", "hello"])
stdoutdata, stderrdata = p.communicate()
print stdoutdata
Läuft dieses Skript liefert die folgende Ausgabe:
hello
None
[Finished in 0.0s]
So, obwohl der Ausgang wird immer gedruckt von Python, die stdoutdata
variable None
, und nicht "hello"
wie ich es gerne hätte. Wie kann ich das so machen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist weder stdout, um den Popen Konstruktor wird die Standard-Funktionalität einfach die Ausgabe schreibt, um Eltern stdout-handle. Also Sie sehen, es wird gedruckt in der shell.
Zitat aus
Popen
's docs:Auffüllen stdout im resultierenden Tupel verwenden
subprocess.PIPE
als stdout.Zitat aus docs:
Müssen Sie gehen
stdout
,stderr
flagsPopen
Konstruktor.Per default werden Sie
None
, was inPopen
ist nicht die Erfassung von Ihnen.Scheint es, wie die Teilprozess.check_output Methode ist, was ich brauche:
Den
output
ist jetzt'hello\n'
(darunter ein neue-Zeile-Zeichen) als ich erwarten würde.