Errormeldungen von Pythonw umleiten

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
WGutsche
User
Beiträge: 2
Registriert: Montag 26. November 2007, 10:28
Wohnort: Gera

Hallo,

ich will Python als Skriptinterpreter für ein Windowsprogramm nutzen.
Funktioniert auch soweit.
Ich starte Python aus meinem Programm herraus mit der Befehlszeile:
"C:\Programme\Python25\pythonw.exe meinSkript.pyw".
Ich kommuniziere dann mit dem Skript über TCP/IP.
Das Skript wird vollständig im Hintergrund ausgeführt.
Mein Problem ist nun, dass mir ein Abbruch des Skripts durch einen Fehler verborgen bleibt.
Kann man die Ausschriften, die normalerweise in der Python-Shell landen irgendwie umleiten?

MfG
Wolfgang
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

WGutsche hat geschrieben:Kann man die Ausschriften, die normalerweise in der Python-Shell landen irgendwie umleiten?
Hallo Wolfgang!

Nicht bei der Verwendung von "pythonw.exe". Dieses schluckt STDOUT und STDERR einfach.

Du müsstest von deinem Programm aus "python.exe" aufrufen und STDOUT und STDERR in deinem Programm direkt verarbeiten. Unter Python ginge das mit ``subprocess.Popen``. Was du in deinem Windowsprogramm dafür verwenden musst, hängt von der verwendeten Programmiersprache ab.

Zur Not kannst du die Ausgabe des Python-Programms in eine Textdatei umleiten und diese danach auslesen. So mache ich es z.B. in meinen Visual Basic 6 Programmen, da geht es nicht anders.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
WGutsche
User
Beiträge: 2
Registriert: Montag 26. November 2007, 10:28
Wohnort: Gera

Hallo Gerold,

vielen Dank für Deinen Tipp.
Ich werde jetzt auch erst mal mit einer Textdatei arbeiten.
Sieht allerdings ein bischen kompliziert aus, da ich einen neuen Kommandointerpreter aufrufen muss:
cmd /c ""python.exe" "MyPath\MyScript.py" > error.txt 2>&1"

Es funktioniert es auch, wenn in MyPath Leerzeichen enthalten sind.
Es funktioniert aber nicht richtig, wenn in MyScript Leerzeichen enthalten sind. Dann kommt nur noch Stderr in der Datei an.

Na ja, kan ich mit leben.

MfG
Wolfgang
Antworten