如何获取正在运行的python脚本的路径?

How do I get the path of a the Python script I am running in?

本问题已经有最佳答案,请猛点这里访问。

Duplicate:
In Python, how do I get the path and name of the file that is currently executing?

如何获取正在运行的python脚本的路径?我在做dirname(sys.argv[0]),但是在mac上我只得到文件名,而不是像在windows上那样得到完整的路径。

无论从何处启动应用程序,我都希望打开与脚本文件相关的文件。


os.path.realpath(__file__)将提供当前文件的路径,解析路径中的任何符号链接。这在我的Mac上很好用。


7.2潜入Python:寻找路径。

1
2
3
4
5
6
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))


1
2
import os
print os.path.abspath(__file__)


如果您计划使用py2exe编译脚本,则此问题的公认解决方案将不起作用。如果您打算这样做,这是功能等效的:

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

py2exe不提供__file__变量。参考:http://www.py2exe.org/index.cgi/py2exeenvironment


如果您甚至具有相对路径名(在本例中,它似乎是./),则可以打开与脚本文件相关的文件。我使用Perl,但同样的通用解决方案也适用:我将目录拆分成一组文件夹,然后从最后一个元素(脚本)中删除pop,然后在我想要的任何元素上删除push(或者对于您,append),然后再将它们连接在一起,然后砰!我有一个工作路径名,它精确地指向我期望它指向的位置,相对或绝对。

当然,有更好的解决方案,如贴出的。我只是有点喜欢我的。