Ich habe ein Python-Skript, das einmal pro Minute läuft. Zum Debuggen möchte ich Textdateien mit Fehlern/Ausnahmen erstellen, falls sie auftreten. Falls Fehler fehlen, möchte ich keine Log-Dateien.Wie speichere ich Python-Fehler (stderr) nur dann in eine Protokolldatei, wenn tatsächlich Fehler auftreten?
BEARBEITEN: Ich kann nicht alle meinen Code in eine try/except-Schleife wickeln, so this hilft nicht.
Zuerst habe ich stderr
speichere tun, um .txt:
sys.stderr = open('ERRORS_%s.txt' % (infile), 'a')
with open("%s_Error_Messages.txt" % (MSKSN), "a") as myfile:
myfile.close()
Zweitens versuche ich dann leer "%s_Error_Messages.txt" % (MSKSN)
Dateien vor allen raise SystemExit
Positionen zu löschen, da kein Fehler (sonst angehoben wurde, die raise SystemExit
Position würde nicht wurden erreicht).
if os.path.getsize('ERRORS_%s.txt' % (infile)) == 0:
os.remove('ERRORS_%s.txt' % (infile))
Was ich bekomme ist WindowsError: [Error 32] The process cannot access the file because it is being used by another process
. Ich gehe davon aus, dass stderr
immer von python.exe verwendet wird, solange das Skript ausgeführt wird.
Für den ersten Schritt, ich habe auch versucht:
if sys.stderr != 0:
sys.stderr = open('ERRORS_%s.txt' % (infile), 'a')
die seit sys.stderr nicht funktioniert ist nie 0.
Wie sys.stderr schreiben nur für den Fall, .txt von tatsächliche Fehler?
Vielleicht können Sie das Modul verwenden 'logging' Sie Fehlermeldungen sammeln helfen – xiaoyi