Python 脚本在 pythonw 下失败

Ram*_*hum 6 python pythonw

我在 Windows 7 上运行 Python 3.3。当我这样调用它时,我有一个成功的脚本:

c:\python33\python.exe my_script.py
Run Code Online (Sandbox Code Playgroud)

但是当我这样称呼它时失败了:

c:\python33\pythonw.exe my_script.py
Run Code Online (Sandbox Code Playgroud)

我想使用 定期启动它pythonw,因为它应该每小时运行一次,而且我不想每次启动时都看到丑陋的控制台窗口。

(我知道脚本失败是pythonw因为 (a.) 它立即退出,大约需要两分钟,并且 (b.) 它应该发送电子邮件,但它没有。)

我什至如何调试它?由于pythonw没有显示任何输出,我不知道该怎么做。

Mar*_*ers 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
Run Code Online (Sandbox Code Playgroud)

您可以添加其他日志记录调用,可以创建一个日志记录对象来对配置等进行更细粒度的控制,但作为第一步,就是我要做的。

如果程序仍然立即退出,则开始平分。删除一半代码,与删除另一半代码进行比较(允许依赖关系)。如果一半损坏而另一半工作(在一半代码丢失的限制内),那么您就知道在哪里继续搜索。