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.