< p > 复制: < br > 在Python中,如何获取当前正在执行的文件的路径和名称? < / p >
如何获取正在运行的Python脚本的路径?我正在做dirname(sys.argv[0]),但是在Mac上我只得到文件名-而不是完整的路径,因为我在Windows上做的。
dirname(sys.argv[0])
无论我的应用程序从哪里启动,我都想打开与脚本文件相关的文件。
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!我有一个工作路径名,它精确地指向我期望它指向的位置,相对或绝对。
./
pop
push
append
当然,还有更好的解决方案。我只是有点喜欢我的。
使用它来获取当前文件的路径。它将解析路径中的任何符号链接。
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
__file__