6

Windows 7 で Python 3.3 を実行しています。次のように呼び出すと成功するスクリプトがあります。

c:\python33\python.exe my_script.py

しかし、次のように呼び出すと失敗します。

c:\python33\pythonw.exe my_script.py

を使用して定期的に起動したいと考えていますpythonw。これは、1 時間に 1 回実行する必要があり、起動するたびに醜いコンソール ウィンドウを表示したくないためです。

pythonw( (a.) 約 2 分かかるはずのスクリプトがすぐに終了し、(b.) 電子メールを送信するはずなのに送信されないため、スクリプトが失敗することはわかっています。)

どうすればデバッグできますか? 出力が表示されないためpythonw、何をすべきかわかりません。

4

1 に答える 1

3

トップレベルのコードを、例外をログに記録する try-except ハンドラーでラップできます。

import logging

logging.basicConfig(filename=r'C:\TEMP\debug.log', level=logging.DEBUG)
try:
    # top-level code
except:
    logging.exception('Danger, Robinson!')
    raise

他のログ呼び出しを追加したり、ログ オブジェクトを作成して構成をより細かく制御したりできますが、最初のステップとしてそれを行います。

プログラムがまだすぐに終了する場合は、バイセクトを開始します。コードの半分を削除し、残りの半分を削除して比較します (依存関係を考慮して)。半分が壊れ、残りの半分が (コードの半分が欠落しているという制約の範囲内で) 機能する場合、検索を続行する場所がわかります。

于 2015-11-21T14:15:03.020 に答える