STDOUT kann nicht im Original wiederhergestellt werden (nur für Terminal)

8

Ich muss alle meine Druckanweisungen sowohl an das Terminal als auch an die Datei ausgeben. Ich habe eine Lösung in gefunden stackoverflow Frage Also ich benutze

%Vor%

Das funktioniert super,

Mein Problem ist, wenn ich aufhören will, in die Datei zu schreiben und zum normalen Betrieb zurückzukehren, der nur auf dem Endgerät gedruckt wird Ich habe versucht, del (sys.stdout) zu verwenden, um die Methode del ohne Glück aufzurufen.
Ich habe sogar versucht, die letzte Zeile zu ändern:

%Vor%

und dann verwenden Sie del (multiple_print) und failed

Was auch immer ich versuchte, weitere Verwendungen von print werden immer noch in Terminal und Datei geschrieben.

Irgendwelche Ideen?

    
Gil.I 08.01.2012, 11:34
quelle

1 Antwort

13

Sie müssen einen Verweis auf den ursprünglichen Dateideskriptor vor der Neuzuweisung speichern:

%Vor%

und weisen Sie es anschließend sys.stdout ! neu zu!

Die Anweisung del ruft __del__ nicht direkt auf, sondern verringert den Referenzzähler Ihres Objekts. Die Methode __del__ wird aufgerufen, wenn der Referenzzähler Null erreicht und Ihr Objekt zerstört wird. Sie können also die Neuzuweisung nicht erzwingen, weil es Sache des Müllsammlers ist, Ihre Methode __del__ aufzurufen.

Sie müssen die Variable sys.stdout direkt neu zuweisen:

Versuchen:

%Vor%     
Don Question 08.01.2012, 11:37
quelle

Tags und Links