Seite 1 von 1
Python stdout, stderr
Verfasst: Dienstag 19. Mai 2009, 10:56
von PNS-Richi
Hallo,
man kann ja mithilfe von sys.stderr = open("/tmp/test.stderr","a") und sys.stdout = open("/tmp/test.stdout","a") stderr und stdout in eine Datei umleiten. Ich würde es aber gerne trotzdem am Bildschirm ausgeben lassen und gleichzeitig in eine Datei schreiben. Kennt jemand eine Möglichkeit?
lg Richi
Verfasst: Dienstag 19. Mai 2009, 11:01
von BlackVivi
Ich würd'ne neue Klasse machen die von file erbt und die Methode write überschreibt... Dort einfach nur die Methode der Superklasse aufrufen und darunter'n print. Wären 3 Zeilen Code und eine Veränderung der Zuweisung des sys.stdout.
Verfasst: Dienstag 19. Mai 2009, 11:07
von EyDu
Code: Alles auswählen
import sys
class Spam(object):
def __init__(self, filename):
self.output_file = open(filename, "w")
self.stdout = sys.stdout
def write(self, data):
self.output_file.write(data)
self.stdout.write(data)
def reset(self):
sys.stdout = self.stdout
self.stdout_file.close()
sys.stdout = Spam("test.txt")
print "hallo"
Das kann man noch viel allgemeiner machen, aber als Anregung sollte es reichen.
Verfasst: Dienstag 19. Mai 2009, 12:18
von PNS-Richi
vielen Lieben dank für eure Hilfe

Verfasst: Dienstag 19. Mai 2009, 18:25
von DasIch
Irgendwie habe ich das Gefühl dass logging die Lösung für das eigentliche (ungenannte) Problem ist.