2011-09-03 33 views
7

Tôi đang tìm một giải pháp, nhưng không tìm thấy những gì tôi cần.Python: thư mục của tập lệnh

Script đường dẫn: /dir/to/script/script.py hoặc C: \ dir \ script.py

kết quả trừ:

$ ./script.py 
output: /dir/to/script 
$ cd .. && ./script/script.py 
output: /dir/to/script 

Có bất kỳ chức năng trong os module hay gì đó?


Tôi trộn các giải pháp và viết:

print os.path.abspath(os.path.dirname(__file__)) 

Nhưng nó xấu xí. Có cách nào tốt hơn không?

Trả lời

15

os.path.realpath sẽ cung cấp cho bạn kết quả:

os.path.dirname(os.path.realpath(__file__)) 
+0

câu hỏi yêu cầu các dirname kịch bản. tất cả các đường dẫn thực hiện là loại bỏ các liên kết tượng trưng và sau đó trả về 'os.path.abspath' – wim

+0

@wim ok cố định, nhờ chỉ ra –

+2

nó vẫn còn mong manh và giả định một số thứ về cwd và nơi tập lệnh được thực thi. ví dụ, đặt 'os.chdir ('/ tmp')' vào dòng ở trên trong tập lệnh và giải pháp này có thể phá vỡ. – wim

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