2015-04-25 31 views
5

Vì lý do nào đó os.path.isfile() thỉnh thoảng trả về false cho một số tệp Windows hiện có. Lúc đầu, tôi giả định rằng các khoảng trống trong tên tệp đã gây ra sự cố, nhưng các đường dẫn tệp khác có khoảng trống hoạt động tốt. Đây là bản sao từ bảng điều khiển Python minh họa vấn đề này:os.path.isfile() trả về false cho tệp Windows hiện tại

>>> import os 
>>> os.path.isfile("C:\Program Files\Internet Explorer\images\bing.ico") 
False 
>>> os.path.isfile("C:\Program Files\Internet Explorer\images\PinnedSiteLogo.contrast-black_scale-80.png") 
True 

Làm cách nào để khắc phục sự cố này?

Trả lời

9

\b trong chuỗi có nghĩa là backspace. Nếu bạn muốn các dấu gạch chéo ngược thực tế trong một chuỗi, chúng cần phải được thoát bằng nhiều dấu gạch chéo ngược (\\ thay vì \) hoặc bạn cần sử dụng chuỗi thô (r"..." thay vì "..."). Đối với đường dẫn tệp, tôi khuyên bạn nên sử dụng dấu gạch chéo chuyển tiếp.

+0

Các công trình sau đây: '>>> os.path.isfile (r "C: \ Program Files \ Internet Explorer \ images \ bing.ico") TRUE' Tuy nhiên, con đường là ở một biến và tôi không thể sử dụng r với các biến. –

+0

@NemoXXX Nó phải là True. Nó tương đương với '' C: \\ Program Files \\ Internet Explorer \\ images \\ bing.ico' – skyline75489

+0

@ skyline75489: đường dẫn bắt đầu bằng r trả về true, nhưng tôi cần một hàm, vì đường dẫn là một biến và ' os.path.normpath() 'trả về' 'C: \\ Program Files \\ Internet Explorer \\ images \ x08ing.ico'' không hoạt động vì chữ thường b là \ xAA. –

Các vấn đề liên quan