有些常见的方法并非在所有情况下都有效:
sys.argv0
这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),
下面是一个测试案例的结果:
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 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()
execfile("subdir/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()
文件路径C:.
| a.py
\---subdir
b.py