如何获得我正在运行的Python脚本的path?

重复:
在Python中,如何获取当前正在执行的文件的path和名称?

如何获得我正在运行的Python脚本的path? 我正在做dirname(sys.argv[0]) ,但是在Mac上我只能得到文件名 – 而不是像我在Windows上完整的path。

无论我的应用程序从哪里启动,我都想打开与我的脚本文件相关的文件。

os.path.realpath(__file__)将为您提供当前文件的path,parsingpath中的任何符号链接。 这在我的Mac上正常工作。

深入Python入门: 寻找path

 import sys, os print('sys.argv[0] =', sys.argv[0]) pathname = os.path.dirname(sys.argv[0]) print('path =', pathname) print('full path =', os.path.abspath(pathname)) 
 import os print os.path.abspath(__file__) 

如果您打算使用py2exe编译您的脚本,则接受的解决scheme将不起作用。 如果你打算这样做,这是相同的function:

 os.path.dirname(sys.argv[0]) 

Py2exe不提供__file__variables。 供参考: http : //www.py2exe.org/index.cgi/Py2exeEnvironment

如果你甚至有相对path名(在这种情况下它看起来是./ ),你可以打开相对于你的脚本文件的文件。 我使用Perl,但同样的一般解决scheme可以适用:我将目录拆分成一个文件夹数组,然后pop最后一个元素(脚本),然后push (或为你, append )任何我想要的,然后join他们再一起和BAM! 我有一个工作path名,指向我期望它指向相对或绝对的地方。

当然,还有更好的解决办法,就像张贴的那样。 我只是有点像我的。