我正在将一个程序从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)
怎么了?我假设它与循环的速度与文件访问时间或某些东西有某种关系,因为慢慢地步进允许它执行正常,但老实说我不知道问题是什么.