2012-06-15 1 views
5

Tôi đang cố gắng để thay đổi thư mục hiện hành C:-Y: tôi đã cố gắng:Làm thế nào tôi có thể thay đổi ổ đĩa bằng cách sử dụng python os?

import os 
os.chdir('Y:') 

nhưng tôi cứ bị một lỗi nói rằng nó không thể xác định vị trí ổ đĩa. Về cơ bản, tôi đang tìm kiếm tương đương với các số

cd /d 

lệnh bằng cmd.

+3

Bạn nhận thấy rằng "thay đổi thư mục hiện tại từ C: thành Y:" thực sự không có ý nghĩa gì trong Windows? Có một ổ đĩa mặc định hiện tại, và một thư mục riêng biệt hiện tại cho mỗi ổ đĩa. Vì vậy, bạn có thể thay đổi ổ đĩa hiện tại thành Y :, hoặc bạn có thể thay đổi ổ đĩa hiện tại thành Y: và thay đổi thư mục trên đó thành \, nhưng đó là các hoạt động khác nhau. (Ở cấp độ C API nó _chdrive (25) so với _chdir ("Y: \\"), và nó có thể tương tự như trong Python, ngoại trừ chdrive có thể không tồn tại trong os và bạn phải đi đến msvcrt, hoặc thậm chí ctypes thực tế MSVCRT DLL.) – abarnert

+0

Tôi nhận ra kết nối của tôi với Y: đã bị gián đoạn bằng cách nào đó, nhưng một khi tôi sắp xếp ra chdir ('Y:') làm việc tốt. Cảm ơn sự giúp đỡ trong mọi trường hợp. – aensm

Trả lời

7

Bạn có chắc chắn Y: thực sự là một ký tự ổ đĩa hợp lệ không?

Hãy thử os.chdir('C:') và đảm bảo hoạt động. (Nó phù hợp với tôi.)

+1

Hoạt động tốt cho tôi và không quan tâm đến "trường hợp" – jdi

+0

Tôi có ổ Y: và tôi đã có thể truy cập bằng cách sử dụng "cd/d Y:" – aensm

+1

@aensm: Ngay cả khi 'os.chdir (' Y: ') 'đã hoạt động, nó không thực hiện tương tự như" cd/d Y: ". Xem nhận xét của @ abarnert. – martineau

1

Nếu đây là ổ đĩa mạng được ánh xạ, tốt nhất bạn nên sử dụng đường dẫn UNC thay vì đường dẫn được ánh xạ. Ngoài ra, hãy thử sử dụng công cụ sửa đổi chuỗi r thô khi sử dụng đường dẫn bên dưới cửa sổ, nếu bạn không sử dụng os.path.join.

import os 
print os.getcwd() 
os.chdir(r'\\server\path') 
print os.getcwd() 
+1

giải pháp của bạn hoạt động tốt. Nếu có ai muốn sử dụng đường dẫn UNC trực tiếp trong việc mở, đọc, viết. chỉ cần làm cho chuỗi thô như được hiển thị ở đây. Nó hoạt động như một charm.Thanks – bicepjai