【问题标题】:Python script suddenly exiting when being run through windowsPython脚本通过windows运行时突然退出
【发布时间】:2017-10-21 17:52:49
【问题描述】:

我正在从另一个程序 (Stata) 调用 Python 脚本,该程序有一个用于调用操作系统 (shell/winexec) 的命令。这反过来会打开一个系统窗口,您可以在其中看到 Python 脚本正在运行。有时脚本运行得很好,有时它在完成之前突然退出。我不知道为什么。当我在 IDLE 中运行脚本时,我从来没有遇到过这个问题。我正在使用 Windows 和 Python 3.4。

我尝试通过记录 Python 脚本来捕获错误,但那里没有记录任何错误。一切似乎都正常工作,直到程序退出(并不总是在同一点)。另外,我调用了 7 个脚本,其中只有两个遇到过这种突然退出的问题(同样,它们在 IDLE 中总是运行良好)。我尝试更改调用脚本的顺序并使用 shell 而不是 winexec,反之亦然。在这一点上,我什至不知道该尝试什么。是操作系统吗? Python?斯塔塔?任何想法将不胜感激!

【问题讨论】:

  • Python程序是否因为异常而退出?对了,什么 Python程序?
  • 不,我在日志文件中没有看到任何异常。不确定“什么 Python 程序”是什么意思;如果是关于脚本在做什么,那就是在抓取东西。同样,当我使用 IDLE 时运行良好。
  • 在 Python 脚本中的大部分逻辑周围放置一个try/except,以捕获在其执行期间可能引发的任何异常(并在之前打印一条有意义的错误消息退出)。
  • martineau,现在试试。当然,现在它没有崩溃……可能需要尝试几次。
  • @RandomCat:我的意思是,如果没有看到任何代码,我们就帮不上忙。

标签: python stata exit


【解决方案1】:

如果没有马蒂诺,就无法解决这个问题!发布答案以防有人遇到类似(看似)神秘的错误。

首先,我按照 Martineau 的建议记录了错误:

import logging

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

try:
    [all my code]

except Exception as e:
    logging.info(e)

这记录了错误:“charmap' codec can't encode character '\u2013' in position 448: character maps to undefined”。出于某种超出我工资等级的原因,IDLE 和 python.exe(在 Python 3.4 中)不会以相同的方式处理编码。这导致了问题(并且只有在出现特殊字符时才会出现问题,这就是为什么它不会每次都崩溃)。

我寻找编码问题的解决方案并找到它here。基本上,我从 Python 3.4 升级到 Python 3.6,编码问题就消失了。

【讨论】:

    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 2017-09-13
    • 2022-06-14
    • 1970-01-01
    • 2019-12-24
    • 2021-05-09
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多