这可能看起来像一个新手问题,但事实并非如此。一些常见的方法并不适用于所有情况:
sys.argv
这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0]))
,但如果您从另一个目录中的另一个Python脚本运行,这将不起作用,这在现实生活中可能会发生。
__file__
这意味着使用path = os.path.abspath(os.path.dirname(__file__))
,但我发现这不起作用:
py2exe
没有__file__
属性,但在我获取NameError: global name '__file__' is not defined
的地方没有__file__
attribute
execute()
从__file__
运行execute()
答案不完整的相关问题:
我正在寻找一个通用解决方案,一个可以在上述所有用例中工作的解决方案。
更新
以下是一个测试用例的结果:
python a.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
a.py
#! /usr/bin/env python
import os, sys
print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print "a.py: os.getcwd()=", os.getcwd()
print
execfile("subdir/b.py")
File子目录/b.py
#! /usr/bin/env python
import os, sys
print "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
https://stackoverflow.com/questions/2632199
复制相似问题