stdout umlenken und zurück

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo zusammen,

ich habe zur Zeit ein Problem mit der Umlenkung der Anzeige des Directories eines FTP Servers.

Ich würde diese Ausgabe auf stdout gerne in eine Datei umlenken. Mit dem folgenden Befehl funktioniert die Umlenkung in eine Datei, aber nach der Ausgabe des Directories würde ich die Umlenkung gerne rückgängig machen - also alles soll so sein wie vor der Umlenkung. Wie funktioniert das?

Code: Alles auswählen

# Show directory
sys.stdout = open("stdout.txt", "w")
FTPInstance.dir()
sys.stdout = close("stdout.txt", "w")
Die letzte Zeile ist definitiv falsch. Aber wie geht das richtig?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

old_stdout = sys.stdout
target = open("stdout.txt", "w")
sys.stdout = target
FTPInstance.dir()
target.close()
sys.stdout = old_stdout
Das Leben ist wie ein Tennisball.
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin,

Code: Alles auswählen

sys.stdout = sys.__stdout__
Gruß,
Manuel
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

@helduel: das sollte man nicht machen, weil damit vorhergehende Umleitungen einfach ignoriert werden.

@EyDu: und am besten packt man das noch in ein try-finally.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

birkenfeld hat geschrieben:@EyDu: und am besten packt man das noch in ein try-finally.
Stimmt. Ich wollte eigentlich noch einen Hinweis schreiben, habe es dann aber offensichtlich vergessen.
Das Leben ist wie ein Tennisball.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo zusammen,

danke euch allen für die schnelle und doch so einfache Lösung :D

Echt super !!!

CU
Antworten