verhindert, dass subprocess.Popen die Ausgabe in Python anzeigt

7

Ich versuche also, die Ausgabe eines Befehls in eine Variable zu speichern. Ich möchte nicht, dass die Ausgabe während des Befehls angezeigt wird, obwohl ...

Der Code, den ich gerade habe, ist wie folgt ...

%Vor%

Wenn ich das in eine Datei lege und es in der Kommandozeile ausführe. Ich bekomme die folgende Ausgabe, obwohl ich keine print-Anweisung im Code habe. Wie kann ich dies verhindern und trotzdem die Ausgabe speichern?

%Vor%     
user1601716 24.12.2012, 16:15
quelle

2 Antworten

17

Was Sie sehen, ist die Standardfehlerausgabe, nicht die Standardausgabeausgabe. Die Umleitung von Stderr wird vom Konstruktor-Argument stderr gesteuert. Der Standardwert ist None . Dies bedeutet, dass keine Umleitung erfolgt, weshalb Sie diese Ausgabe sehen.

Normalerweise ist es eine gute Idee, die Ausgabe von stderr beizubehalten, da sie das Debuggen erleichtert und die normale Umleitung nicht beeinträchtigt (z. B. | und > Shellumleitung werden stderr standardmäßig nicht erfassen). Sie können es jedoch anderswo auf die gleiche Weise umleiten wie Sie es tun:

%Vor%

Oder Sie können einfach stderr:

%Vor%     
Francis Avila 24.12.2012, 16:31
quelle
2

Sie fangen stdout, aber Sie fangen nicht stderr (Standardfehler) an, von dem ich denke, ist, wo diese Nachricht herkommt.

%Vor%

Das bringt alles von stderr an die gleiche Stelle wie stdout.

    
oathead 24.12.2012 16:25
quelle

Tags und Links