Seite 1 von 1
Asugabe von Python Programm in Datei umleiten
Verfasst: Samstag 22. September 2007, 13:57
von samy-delux
Hey Leute,
Ich habe ein Script geschrieben, was noch nicht ganz zuverlässig funktioniert. Das Problem ist, dass ich den Fehler nicht finden kann, da das Skript immer erst nach ca. 1h abstürtzt und ich es leider nur auf meine Root Server ausführen kann. Doch schon nach kurzer Zeit, wenn ich das Skript auf dem Server ausführe, erhalte ich keinen Output mehr!
Deshalb sehe ich auch die Fehlermeldung nicht!
Als Lösung dachte ich mit einfach "script.py > output" auszugühren, aber dort landet dann leider nur der normale output, ohne die Fehlermeldung.
Wie kann ich alles in eine Datei umleiten?
so long,
Samy
Verfasst: Samstag 22. September 2007, 14:09
von rico
was du suchst ist wahrscheinlich:
"script.py 1> standard_output.txt 2> error_output.txt"
oder
"script.py 2>&1 1> output.txt"
dabei wird der Error-Output auf den normalen umgebogen und somit gehts dann auch mit einer Datei.
Verfasst: Samstag 22. September 2007, 14:24
von samy-delux
Sehr gut, genau das wollte ich
Danke!
Verfasst: Samstag 22. September 2007, 15:32
von Leonidas
Geht übrigens auch mit einem einfachen ``&>`` siehe
Bash Programming Howto.
Verfasst: Sonntag 23. September 2007, 15:25
von samy-delux
Hmm, also so ganz funktioniert es doch noch nicht.
Ich starte mein Programm wie folgt:
Und obwohl es wenn man es normal startet, direkt etwas ausgibt, bleibt die Datei space einfach leer!
Woran liegt das?
Verfasst: Montag 24. September 2007, 12:46
von Trundle
samy-delux hat geschrieben:Und obwohl es wenn man es normal startet, direkt etwas ausgibt, bleibt die Datei space einfach leer!
Woran liegt das?
Das könnte passieren, wenn stdout gepuffert wird.
Verfasst: Dienstag 25. September 2007, 08:55
von meneliel
Hatte das Problem letztens auch, dass ich mit Scriptabbrüchen zu tun hatte, die ich nicht immer zurodnen konnte und das Script oft über mehrere Tage lief.
Gelöst hab ich es folgender Maßen:
eine "Log" Datei erstellt, in der mit Zeitstempel alle ungewöhnlichen Sachen rein geschrieben werden:
in meiner Hauptscriptdatei:
In ner anderen Py-Datei, wo viele kleine Behelfsfunktionen drin stehen:
Code: Alles auswählen
def LOG(log, message):
x = time.ctime(time.time())
log.write(x)
log.write(":")
log.write(message)
log.write("\n")
log.flush
Und dann im Hauptscript eine Exception:
Code: Alles auswählen
except:
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"
msgs = "GP ERRORS:\n" + gp.GetMessages(2) + "\n"
helper.log(log, pymsg+ "\n"+msgs+"\n")
...
Ist vielleicht ein wenig Umständlich, aber funktioniert
Den ganzen das msgs müsstest/könntest du weglassen in deinem Fall.
EDIT: falls daran irgendwas auszusetzen ist, BITTE kritisiert
Verfasst: Dienstag 25. September 2007, 09:00
von Rebecca
meneliel, kennst du schon das logging-Modul? [wiki]Neue Features#Logging[/wiki]
Verfasst: Dienstag 25. September 2007, 13:51
von mkesper
meneliel hat geschrieben:
Ich würde die Logdatei (die ich natürlich mit dem logging-Modul fülle
) ungepuffert öffnen: