Python文件存在检查循环崩溃 - 除非我添加一个print语句

Way*_*hen 10 python python-3.x

我正在将一个程序从Python2(不知道使用的确切版本)移植到Python3.3并更新一些东西,但这个循环检查一组最近访问的文件路径是否存在实际文件崩溃.

for index in range(story.recentFiles.GetCount()):
    try:
        if not os.path.exists(story.recentFiles.GetHistoryFile(index)): pass
    except IOError:
        self.RemoveRecentFile(story, index)
        break
Run Code Online (Sandbox Code Playgroud)

访问单个文件工作正常,因此它与循环有关.如果我使用调试器逐步完成循环,代码工作正常,但如果我只是运行应用程序,它会在"python.exe已停止响应"错误时崩溃.

然而,最奇怪的部分必须是,当我在之前添加一个print语句时os.path.exists,它会在常规的runthrough上工作:

for index in range(story.recentFiles.GetCount()):
    try:
        print('test') # Why does printing this make it not crash??
        if not os.path.exists(story.recentFiles.GetHistoryFile(index)): pass
    except IOError:
        self.RemoveRecentFile(story, index)
        break
Run Code Online (Sandbox Code Playgroud)

怎么了?我假设它与循环的速度与文件访问时间或某些东西有某种关系,因为慢慢地步进允许它执行正常,但老实说我不知道​​问题是什么.

sur*_*hvv 0

您正在与一些写得不好的 C/C#/C++ 代码进行交互,因此很难确定错误所在。

从 API 让您通过调用而不是仅使用索引来检索列表项的方式可以明显看出它写得不好。

祝你好运!