从test.py
/tmp
import os
print os.path.abspath(__file__)
os.chdir('/var')
print os.path.abspath(__file__)
输出:
/tmp/test.py
/var/test.py
我预计第二个输出为/tmp/test.py
。这是一个错误还是预期的行为?有没有办法获得不受chdir
影响的文件的实际位置?
我正在使用Python 2.7
答案 0 :(得分:3)
根据您调用python脚本的方式,__file__
可以是绝对路径或相对路径(例如前者为python /tmp/test.py
,后者为cd /tmp; python test.py
。
因此,如果__file__
是相对的,os.path.abspath
将使用当前工作目录作为基本目录。
通过在测试脚本中添加print __file__
来轻松证明。