Python stdout, stderr

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
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

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
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

vielen Lieben dank für eure Hilfe :)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Irgendwie habe ich das Gefühl dass logging die Lösung für das eigentliche (ungenannte) Problem ist.
Antworten