2017-10-21 12 views
0

私はオペレーティングシステム(shell/winexec)を呼び出すためのコマンドを持つ別のプログラム(Stata)からPythonスクリプトを呼び出しています。これにより、Pythonスクリプトが実行されていることがわかるシステムウィンドウが開きます。時にはスクリプトがうまく動作し、終了する前に突然終了することもあります。なぜ私は考えていない。 IDLEでスクリプトを実行すると、この問題は発生しません。私はWindowsとPython 3.4を使用しています。ウィンドウを通過するとPythonスクリプトが突然終了する

私はPythonスクリプトを記録してエラーをキャッチしようとしましたが、そこにエラーが記録されることはありません。プログラムが終了するまで(そして常に同じポイントではない)、すべてが正常に機能しているようです。また、私は7つのスクリプトを呼び出していますが、そのうち2人だけがこの突然の終了問題を抱えています(再び、常にIDLEを通じてうまくいく)。私は、スクリプトと呼ぶ順序を変更して、winexecの代わりにshellを使い、その逆を試みました。この時点で、私は何を試すべきかも知らない。それはオペレーティングシステムですか? Python?スタータ?任意のアイデアをいただければ幸いです!

+1

例外のためにPythonプログラムが終了していますか?ところで、Pythonプログラムは何ですか? –

+0

いいえ、ログファイルに例外はありません。あなたが "どのようなPythonプログラム"を意味するかわからない。スクリプトが何をしているのかについては、それを削っている。 IDLEを使用すると、うまく動作します。 – RandomCat

+0

実行中に発生する可能性のある_any_例外を捕捉するPythonスクリプトのロジックの大部分に 'try/except'を入れます(終了する前に意味のあるエラーメッセージを出力します)。 – martineau

答えて

0

Martineauなしではこれを理解できませんでした。誰かが(一見)謎のような似たような誤りを抱えている場合の回答を投稿する。

まずマーティが示唆したように、私は、エラーをログに記録:

import logging 

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

try: 
    [all my code] 

except Exception as e: 
    logging.info(e) 

をこれがエラーを記録した:「charmapの位置448で\ u2013 『」コーデックは、文字をエンコードすることはできません』:文字が未定義にマップ」。私の給与等級を超えている何らかの理由で、IDLEとpython.exe(Python 3.4)は同じ方法でエンコーディングを処理しません。それは問題を引き起こしていました(そして、特殊文字が現れたときだけ、毎回崩壊しなかったのです)。

コード化の問題の解決策を探して、hereが見つかりました。基本的に、私はPython 3.4からPython 3.6にアップグレードし、エンコーディングの問題は消えました。

関連する問題