Tôi đang chuyển một chương trình từ Python2 (không biết phiên bản chính xác được sử dụng) sang Python3.3 và cập nhật một vài thứ, nhưng vòng lặp này kiểm tra sự tồn tại của một tập hợp các đường dẫn tệp được truy cập gần đây đối với các tệp thực sự bị treo.Kiểm tra sự tồn tại của tập tin Python - trừ khi tôi thêm lệnh in
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
Truy cập vào một tệp duy nhất hoạt động tốt, do đó, đó là điều cần làm với vòng lặp. Nếu tôi bước qua vòng lặp với một trình gỡ lỗi, mã hoạt động tốt, nhưng nếu tôi chỉ chạy ứng dụng, nó treo trên một lỗi "python.exe đã ngừng đáp ứng".
Phần kỳ lạ nhất, tuy nhiên, đã có được điều đó khi tôi thêm một tuyên bố in trước os.path.exists
, nó hoạt động trên một sự nhìn qua thường xuyên:
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
là gì với điều đó? Tôi giả sử nó có một số loại mối quan hệ với tốc độ của vòng lặp so với thời gian truy cập tập tin hoặc một cái gì đó kể từ khi bước qua từ từ cho phép nó thực hiện tốt, nhưng tôi thành thật không có ý tưởng vấn đề là gì.
Có thể lỗi với Python 3 :)? – Bharat
Nó có thể là một lỗi. Một giả định không chắc chắn là, nếu chương trình không làm bất cứ điều gì, Windows nghĩ rằng nó không đáp ứng. Nhưng, nếu bạn in một cái gì đó, MS biết ứng dụng đang hoạt động. Điều đó đã xảy ra với tôi một lần trong VB.NET. – refi64
Các tệp đang truy cập là gì?Họ có tồn tại không? Các cuộc gọi đó thành 'câu chuyện' làm gì? Bạn có thể cho một ví dụ hoàn chỉnh, có thể chạy lại được không? – BrenBarn