如何在Python中获得当前执行的文件的路径?
这似乎是个新手的问题,但事实并非如此。有些常见的方法并非在所有情况下都有效:
sys.argv[0]
这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,则此操作不起作用,而且在现实生活中可能会发生这种情况。
_文件
这意味着使用path = os.path.abspath(os.path.dirname(__file__))但我发现这不管用py2exe没有
__file__属性,但是有一个
当您从空闲的
execute()没有
__file__属性
OSX10.6
NameError: global name '__file__' is not defined
答案不全的相关问题:
我在找一个通用解,在上述所有用例中都能工作。
更新
下面是一个测试案例的结果:
pythona.py的输出(在Windows上)a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz
b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
阿比#! /usr/bin/env pythonimport os, sysprint "a.py: sys.argv[0]=", sys.argv[0]print "a.py: __file__=", __file__print "a.py: os.getcwd()=",
os.getcwd()printexecfile("subdir/b.py")
subdir/b.py#! /usr/bin/env pythonimport os, sysprint "b.py: sys.argv[0]=", sys.argv[0]print "b.py: __file__=", __file__print "b.py: os.getcwd()=",
os.getcwd()print
树C:.| a.py
\---subdir
b.py