2011-09-03 99 views
7

我正在尋找一個解決方案,但還沒有找到我所需要的。Python:腳本目錄

腳本路徑:/dir/to/script/script.pyC:\目錄\ script.py

的例外結果:

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

是否有任何操作系統功能模塊什麼的?


我是混合性的解決方案,並寫:

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

但它是醜陋的。有更好的方法嗎?

回答

15

os.path.realpath會給你的結果:

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

要求腳本目錄名稱的問題。所有的實際路徑是消除符號鏈接,然後返回'os.path.abspath' – wim

+0

@wim好的修復,謝謝指出 –

+2

它仍然是脆弱的,並假設某些事情關於cwd和腳本從哪裏執行。例如,在腳本中將'os.chdir('/ tmp')'放在上面的行中,並且此解決方案可能會中斷。 – wim