2010-06-01 42 views
11

Tôi đang chạy môi trường Mac OS X và đang được sử dụng để sử dụng ~/để cung cấp quyền truy cập vào thư mục của người dùng hiện tại.Truy cập đường dẫn tương đối bằng Python

Ví dụ, trong kịch bản python của tôi Tôi chỉ cố gắng để sử dụng

os.chdir("/Users/aaron/Desktop/testdir/") 

Nhưng muốn sử dụng

os.chdir("~/Desktop/testdir/") 

Tôi nhận được một không có tập tin hoặc thư mục lỗi khi cố gắng để chạy cái này. Bất kỳ ý tưởng?

Trả lời

15

Bạn sẽ cần phải sử dụng os.path.expanduser(path)

os.chdir("~/Desktop/testdir/") đang tìm kiếm một thư mục có tên "~" trong thư mục làm việc hiện tại.

Cũng chú ý đến tài liệu của hàm đó - cụ thể là bạn sẽ cần biến môi trường $HOME được đặt đúng để đảm bảo rằng việc mở rộng diễn ra. Hầu hết thời gian này sẽ không thành vấn đề nhưng nếu việc mở rộng không diễn ra, đó là nguyên nhân có thể xảy ra.

+0

Tôi không biết về điều đó! +1 –

+1

Rất tuyệt, làm cách nào để tôi thực sự sử dụng đúng cách này? "Đường dẫn" có phải là "/ Desktop/testdir" không? Và làm thế nào để tôi thực sự thay đổi thư mục đó. Cám ơn rất nhiều. – Aaron

+0

Chỉ cần lồng vào bên trong cuộc gọi chdir hiện có của bạn như sau: os.chdir (os.path.expanduser ("~/...")) –

2

Từ http://docs.python.org/library/os.path.html

os.path.expanduser(path) 

sẽ mở rộng ~ để trở thành thư mục người dùng gia đình nếu nó được định nghĩa.

+0

Tôi đã thử os.path.expanduser ("/ Desktop/testdir") và nó cho tôi biết không có tập tin hoặc thư mục như vậy: '/ Desktop/test /' Bạn có biết tôi có thể làm gì sai không? Cuối cùng tôi muốn chuyển sang ~/Desktop/testdir – Aaron

+0

os.path.expanduser ("~/Desktop/testdir") là những gì bạn cần, như Dan Head đã đề cập, điều này dựa trên $ HOME được thiết lập. – Tyler

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