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

< p > 复制: < br > 在Python中,如何获取当前正在执行的文件的路径和名称? < / p >

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

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

567228 次浏览
import os
print os.path.abspath(__file__)

潜入Python的7.2:寻找路径

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))

如果你甚至有相对路径名(在这种情况下,它似乎是./),你可以打开相对于你的脚本文件的文件。我使用Perl,但同样的通用解决方案可以应用:我把目录分成一个文件夹数组,然后从最后一个元素(脚本)pop,然后在任何我想要的东西上push(或者为你,append),然后再次将它们连接在一起,然后BAM!我有一个工作路径名,它精确地指向我期望它指向的位置,相对或绝对。

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

使用它来获取当前文件的路径。它将解析路径中的任何符号链接。

import os


file_path = os.path.realpath(__file__)

这在我的mac上工作得很好。它不会从Python解释器工作(你需要执行一个Python文件)。

如果您计划使用py2exe编译脚本,那么已接受的解决方案将不起作用。如果你打算这样做,这是功能对等的:

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

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