Я переношу программу из 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 перестала отвечать".
Самая странная часть, однако, должна состоять в том, что когда я добавляю оператор печати перед 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
Что с этим связано? Я предполагаю, что он имеет какое-то отношение к скорости цикла и времени доступа к файлу или что-то, потому что медленный шаг позволяет ему выполнять штраф, но я честно не знаю, в чем проблема.