2013-08-18 43 views
5

Tôi hiện đang viết một tập lệnh phải kiểm tra xem tất cả các thư mục được chỉ định có thực sự tồn tại hay không. Tôi phát hiện ra tôi phải sử dụng os.path.isdir() với đường dẫn tuyệt đối.os.path.isdir() trả về Sai ngay cả khi thư mục tồn tại

Tôi có cấu trúc thư mục sau:

X:\ 
    pythonscripts\ 
    files\ 
     Films\ 
     Series\ 
    src\ 

Khi tôi mở op dòng lệnh python của tôi và thử nếu các thư mục thực sự tồn tại, tôi nhận được như sau:

>>> import os 
>>> os.path.isdir('X:\pythonscripts\src') 
True 
>>> os.path.isdir('X:\pythonscripts\files') 
False 
>>> os.path.isdir('X:\pythonscripts\files\Films') 
False 
>>> os.path.isdir('X:\pythonscripts\files\Series') 
False 

Đó là kỳ quặc, vì khi tôi sao chép và dán các đường dẫn này vào Windows Explorer, tôi có thể truy cập chúng mà không gặp sự cố. Tôi đã kiểm tra quyền và tất cả các thư mục đều có cùng quyền trên chúng. Có ai biết tôi đang làm gì sai không?

Trả lời

13

thoát xuyệc ngược (\)

os.path.isdir('X:\\pythonscripts\\src') 

hoặc sử dụng chuỗi nguyên:

os.path.isdir(r'X:\pythonscripts\src') 

mà không thoát, bạn sẽ có được con đường sai lầm:

>>> '\f' 
'\x0c' 
>>> print '\f' 

>>> print '\\f' 
\f 
>>> print r'\f' 
\f 
2

Thay vì sử dụng \ bạn có thể đợi nt để sử dụng os.path.sep để mã của bạn hoạt động trên các nền tảng khác, thì bạn cũng không phải thoát khỏi các nền tảng này.

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