重复:
In Python, how do I get the path and name of the file that is currently executing?
如何获取我正在运行的Python脚本的路径?我正在做dirname(sys.argv[0])
,但是在Mac上我只获取文件名 - 而不是像我在Windows上那样的完整路径。
无论我的应用程序从何处启动,我都想打开与我的脚本文件相关的文件。
答案 0 :(得分:410)
os.path.realpath(__file__)
将为您提供当前文件的路径,解析路径中的所有符号链接。这在我的Mac上工作正常。
答案 1 :(得分:91)
7.2潜入Python:Finding the 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))
答案 2 :(得分:82)
import os
print os.path.abspath(__file__)
答案 3 :(得分:36)
如果您计划使用py2exe编译脚本,则无法使用已接受的解决方案。如果您打算这样做,这是功能等同的:
os.path.dirname(sys.argv[0])
Py2exe不提供__file__
变量。供参考:http://www.py2exe.org/index.cgi/Py2exeEnvironment
答案 4 :(得分:-4)
如果您甚至有相对路径名(在这种情况下它似乎是./
),您可以打开相对于您的脚本文件的文件。我使用Perl,但同样的通用解决方案可以应用:我将目录拆分为文件夹数组,然后pop
关闭最后一个元素(脚本),然后push
(或者为你,{{ 1}})在我想要的任何东西上,然后再将它们连接在一起,并且BAM!我有一个工作路径名,指向我希望它指向的位置,相对或绝对。
当然,有更好的解决方案,如发布。我就像我一样。