Zum umleiten von stderr in Python?

Ich würde gerne protokollieren Sie die Ausgabe von einem Python-Skript. Ich habe versucht:

import sys

log = []

class writer(object):
    def write(self, data):
        log.append(data)

sys.stdout = writer()
sys.stderr = writer()

Nun, wenn ich "drucken" etwas "" es wird protokolliert. Aber wenn ich zum Beispiel einige syntax-Fehler, sagen Sie "drucken" etwas# ", es wird nicht protokolliert - es wird in der Konsole statt.

Wie kann ich die erfassen auch die Fehler von Python-interpreter?

Sah ich eine mögliche Lösung hier:

http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3

aber das zweite Beispiel-logs nach /dev/null - das ist nicht das, was ich will. Ich möchte, melden Sie es in eine Liste wie mein Beispiel oben oder StringIO oder so...

Auch, vorzugsweise, die ich nicht erstellen wollen, einen Teilprozess (und Lesen von stdout und stderr in einem separaten thread).

InformationsquelleAutor der Frage EcirH | 2009-12-24

Schreibe einen Kommentar