有没有普遍的Python中的方法,找出当前正在执行的文件的路径?
失败的方法
path = os.path.abspath(os.path.dirname(sys.argv[0]))
如果您从另一个目录中的另一个 Python 脚本运行,例如使用execfile
in 2.x.
path = os.path.abspath(os.path.dirname(__file__))
我发现这在以下情况下不起作用:
-
py2exe
没有__file__
属性,虽然有解决方法 http://www.py2exe.org/index.cgi/WhereAmI
- 当代码运行时IDLE https://en.wikipedia.org/wiki/IDLE using
execute()
,在这种情况下没有__file__
属性
- On Mac OS X v10.6 https://en.wikipedia.org/wiki/Mac_OS_X_Snow_Leopard(雪豹),我明白了
NameError: global name '__file__' is not defined
测试用例
目录树
C:.
| a.py
\---subdir
b.py
内容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")
内容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()
print
输出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
相关(但这些答案不完整)
- 查找当前运行文件的路径 https://stackoverflow.com/questions/1296501/
- 当前文件的路径取决于我如何执行程序 https://stackoverflow.com/questions/1483827/
- 如何知道Python中运行脚本的路径? https://stackoverflow.com/questions/2259503/
- 将目录更改为Python脚本的目录 https://stackoverflow.com/questions/509742/
首先,您需要从以下位置导入inspect
and os
from inspect import getsourcefile
from os.path import abspath
接下来,无论您想从哪里找到源文件,只需使用
abspath(getsourcefile(lambda:0))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)