2017-10-21 1 views
0

Ich rufe ein Python-Skript von einem anderen Programm (Stata), die einen Befehl zum Aufrufen des Betriebssystems (Shell/Winexec) hat. Dies wiederum öffnet ein Systemfenster, in dem Sie das laufende Python-Skript sehen können. Manchmal läuft das Skript gut und manchmal wird es abrupt beendet, bevor es beendet wird. Ich habe keine Idee warum. Ich habe dieses Problem nie, wenn ich das Skript in IDLE ausführe. Ich benutze Windows und Python 3.4.Python-Skript plötzlich beim Ausführen durch Windows

Ich habe versucht, den Fehler durch Protokollieren des Python-Skripts zu erfassen, aber dort wird kein Fehler aufgezeichnet. Alles scheint normal zu funktionieren, bis das Programm beendet wird (und nicht immer am selben Punkt). Außerdem rufe ich 7 Skripte an und nur zwei von ihnen haben jemals dieses plötzliche Beenden-Problem (wieder laufen sie immer gut durch IDLE). Ich habe versucht, die Reihenfolge zu ändern, in der ich die Skripte aufrufen und Shell anstelle von winexec und umgekehrt verwenden. An diesem Punkt weiß ich nicht einmal, was ich versuchen soll. Ist es das Betriebssystem? Python? Stata? Irgendwelche Ideen würden geschätzt werden!

+1

Wird das Python-Programm wegen einer Ausnahme beendet? Übrigens, _what_ Python-Programm? –

+0

Nein, ich sehe keine Ausnahme in der Protokolldatei. Nicht sicher, was Sie mit "welchem ​​Python-Programm" meinen; Wenn es darum geht, was das Skript macht, ist es das Scraping. Auch hier läuft es gut, wenn ich IDLE benutze. – RandomCat

+0

Setzen Sie ein "try/except" um den Großteil der Logik im Python-Skript, das _yy_ Exceptions abfängt, die während seiner Ausführung ausgelöst werden können (und vor dem Beenden eine sinnvolle Fehlermeldung ausgeben). – martineau

Antwort

0

Konnte das ohne Martineau nicht herausgefunden haben! Antwort schreiben, falls jemand einen ähnlichen (scheinbar) mysteriösen Fehler hat.

Zuerst angemeldet ich den Fehler, wie Martineau vorgeschlagen:

import logging 

logging.basicConfig(filename='C:/MyLog.log',level=logging.DEBUG) 

try: 
    [all my code] 

except Exception as e: 
    logging.info(e) 

Diese aufgezeichnet den Fehler: "charmap‘ Codec Charakter nicht kodieren kann '\ u2013' in Position 448: Zeichen abbildet undefined". Aus irgendeinem Grund, der über meine Gehaltsstufe hinausgeht, behandeln IDLE und python.exe (in Python 3.4) die Codierung nicht auf die gleiche Weise. Das verursachte das Problem (und nur wenn Sonderzeichen auftauchten, weshalb es nicht jedes Mal zusammenbrach).

Ich suchte nach der Lösung für das Codierungsproblem und fand es here. Im Grunde habe ich ein Upgrade von Python 3.4 auf Python 3.6 durchgeführt und das Codierungsproblem ist verschwunden.

Verwandte Themen