Teilprozess.Popen (), IO-Umleitung
Versuchen umzuleiten Teilprozess' Ausgabe in eine Datei.
server.py:
while 1:
print "Count " + str(count)
sys.stdout.flush()
count = count + 1
time.sleep(1)
Laucher:
cmd = './server.py >temp.txt'
args = shlex.split(cmd)
server = subprocess.Popen( args )
Die Ausgabe auf dem Bildschirm erscheinen, temp.txt
bleibt leer.
Was mache ich falsch?
Als hintergrund versuche ich zu erfassen, die Ausgabe eines Programms, das schon geschrieben hat.
Kann ich nicht verwenden:
server = subprocess.Popen(
[exe_name],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
als das Programm möglicherweise nicht bündig.
Stattdessen ging ich zum umleiten der Ausgabe über ein fifo. Dies funktioniert gut wenn ich manuell starten server.py aber offensichtlich nicht, wenn ich Popen()
Ursache Umleitung funktioniert nicht.
ps -aux
zeigt, dass server.py
ins Leben gerufen wurde, richtig.
- Mögliche Duplikate von Wie umleiten der Ausgabe mit Teilprozess in Python?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Altenatively, können Sie die
stdout
parameter mit einem file-Objekt:Wie in der Dokumentation:
.communicate()
hier.subprocess.check_call('command', stdout=file)
funktioniert.Ausgabe-Umleitung mit ">" ist ein Merkmal der Muscheln ist standardmäßig
subprocess.Popen
nicht instanziieren ein. Sollte dies funktionieren:shell=True
ist nicht der bevorzugte Weg, es sei denn, es ist notwendig (und hier ist es nicht)