如何从Linux上的符号链接执行脚本时find正在运行的脚本的文件名

如果我有一个通过符号链接执行的Python脚本,有没有一种方法可以find脚本的path而不是符号链接? 我试过使用这个问题中提出的方法,但是他们总是返回到符号链接的path,而不是脚本。

例如,当它保存为我的“/usr/home/philboltt/scripts/test.py”时:

#!/usr/bin/python import sys print sys.argv[0] print __file__ 

然后我创build这个符号链接

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

并使用执行脚本

 /usr/home/philboltt/test 

我得到以下输出:

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

谢谢! 菲尔

你想要os.path.realpath()函数。

os.readlink()将解析一个符号链接,而os.path.islink()会告诉你它是否是一个符号链接。

我相信你将需要检查文件是否是符号链接,如果是的话,找到它链接的地方。 例如…

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