我正在将一个程序从 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
访问单个文件工作正常,所以它与循环有关。如果我使用调试器单步执行循环,代码可以正常工作,但如果我只是运行应用程序,它会因“python.exe 已停止响应”错误而崩溃。
不过,最奇怪的部分是,当我在 之前添加一个 print 语句时os.path.exists
,它可以正常运行:
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
那是怎么回事?我假设它与循环速度与文件访问时间或其他东西有某种关系,因为慢慢地逐步执行允许它执行良好,但老实说我不知道问题是什么。