2009-10-09 58 views
16

thể trùng lặp:
How to get/set logical directory path in pythonCó phiên bản nào của os.getcwd() không liên quan đến các liên kết tượng trưng không?

Tôi có một kịch bản Python mà tôi chạy từ một thư mục symlinked, và tôi gọi os.getcwd() trong đó, chờ đợi để có được những con đường symlinked Tôi chạy nó từ. Thay vào đó nó mang lại cho tôi con đường "thực", và trong trường hợp này không hữu ích. Tôi cần nó để thực sự cho tôi phiên bản symlinked.

Python có lệnh không?

Trả lời

13

Cách giải quyết: os.getenv('PWD')

+0

Ah, cảm ơn. Điều đó chắc chắn hoạt động! –

+4

Lưu ý rằng biến môi trường 'PWD' không được cập nhật bởi' os.chdir() ', vì vậy nó có thể không phù hợp với' os.getcwd() 'ngay cả khi không có symlink nào cả. –

11

Nói chung điều này là không thể. os.getcwd() cuộc gọi getcwd (3), và theo POSIX.1-2008 (IEEE Std 1003.1-2008):

Các tên đường dẫn sẽ không chứa các thành phần có dấu chấm hoặc dấu chấm chấm, hoặc là các liên kết tượng trưng.

os.getenv['PWD'] phụ thuộc vào vỏ và sẽ không hoạt động với ví dụ: sh từ FreeBSD.

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