subprocess.Popen () IO-Weiterleitung

8

Der Versuch, die Ausgabe eines Unterprozesses in eine Datei umzuleiten.

server.py:

%Vor%

Laucher:

%Vor%

Die Ausgabe erscheint auf dem Bildschirm, temp.txt bleibt leer. Was mache ich falsch?

Als Hintergrund versuche ich, die Ausgabe eines bereits geschriebenen Programms zu erfassen.

Ich kann nicht verwenden:

%Vor%

, da das Programm möglicherweise nicht bereinigt wird. Stattdessen würde ich die Ausgabe über einen Fifo umleiten. Das funktioniert gut, wenn ich server.py manuell starte, aber offensichtlich nicht, wenn ich Popen() Ursache Redirect nicht funktioniert. ps -aux zeigt an, dass server.py korrekt gestartet wurde.

    
Pete Roberts 17.01.2012, 21:49
quelle

2 Antworten

7

Alternativ können Sie den Parameter stdout mit einem Dateiobjekt verwenden:

%Vor%

Wie in der Dokumentation erläutert:

  

stdin, stdout und stderr geben die Standardeingabe-, Standardausgabe- und Standardfehler-Dateizugriffsnummern des ausgeführten Programms an. Gültige Werte sind PIPE, ein vorhandener Dateideskriptor (eine positive Ganzzahl), ein vorhandenes Dateiobjekt und None.

    
jcollado 17.01.2012, 22:15
quelle
4

Ausgabeumleitung mit "& gt;" ist eine Eigenschaft von Shells - standardmäßig instanziert subprocess.Popen keinen. Dies sollte funktionieren:

%Vor%     
AdamKG 17.01.2012 21:59
quelle

Tags und Links