2010-03-30 63 views
4

如果我有一個通過符號鏈接執行的python腳本,有沒有一種方法可以找到腳本的路徑而不是符號鏈接?我嘗試過使用this問題中提出的方法,但它們總是返回到符號鏈接的路徑,而不是腳本。如何從Linux上的符號鏈接執行腳本時找到正在運行的腳本的文件名

例如,當這個被保存爲我的 「/usr/home/philboltt/scripts/test.py」:

#!/usr/bin/python 

import sys 

print sys.argv[0] 
print __file__ 

,然後創建符號鏈接

ln -s /usr/home/philboltt/scripts/test.py /usr/home/philboltt/test 

和執行

0:使用

/usr/home/philboltt/test 

我得到以下輸出腳本

/usr/home/philboltt/test 
/usr/home/philboltt/test 

謝謝! 菲爾

回答

3

os.readlink()將解析符號鏈接,並os.path.islink()會告訴你,如果它是一個符號鏈接擺在首位。

+1

很酷,但你如何檢查是否是符號鏈接?如果指向非鏈接,os.readlink()會返回什麼?我想這不難測試。 – 2010-03-30 21:42:55

+0

競賽條件呢?它可以被替換爲符號鏈接後,你檢查,但在你打電話給readlink ... – SamB 2010-03-30 21:46:04

0

我相信你需要檢查文件是否是符號鏈接,如果是的話,找到鏈接的地方。例如...

try: 
    print os.readlink(__file__) 
except: 
    print "File is not a symlink" 
+1

os.path.realpath(__ file__)可以更好地回答你的問題 – 2010-03-30 21:47:13

相關問題