我有脚本调用其他脚本文件,但我需要获得当前在进程中运行的文件的文件路径。
例如,假设我有三个文件。使用execfile:
Script_1.py调用script_2.py。 反过来,script_2.py调用script_3.py。
如何从script_3.py内的代码中获得script_3.py的文件名和路径,而不必将该信息作为script_2.py的参数传递?
(执行os.getcwd()返回初始脚本的文件路径,而不是当前文件的文件路径。)
我有脚本调用其他脚本文件,但我需要获得当前在进程中运行的文件的文件路径。
例如,假设我有三个文件。使用execfile:
Script_1.py调用script_2.py。 反过来,script_2.py调用script_3.py。
如何从script_3.py内的代码中获得script_3.py的文件名和路径,而不必将该信息作为script_2.py的参数传递?
(执行os.getcwd()返回初始脚本的文件路径,而不是当前文件的文件路径。)
当前回答
获取执行脚本的目录
print os.path.dirname( inspect.getfile(inspect.currentframe()))
其他回答
__file__
正如其他人所说。你可能还想使用os.path.realpath来消除符号链接:
import os
os.path.realpath(__file__)
p1.py:
execfile("p2.py")
p2.py:
import inspect, os
print (inspect.getfile(inspect.currentframe())) # script filename (usually with path)
print (os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))) # script directory
试试这个,
import os
os.path.dirname(os.path.realpath(__file__))
import os
os.path.dirname(os.path.abspath(__file__))
不需要检查或任何其他图书馆。
当我必须导入一个脚本(从与执行脚本不同的目录)时,这对我有用,它使用了与导入脚本位于同一文件夹中的配置文件。
您所说的“当前在进程中运行的文件的文件路径”是什么意思并不完全清楚。 sys。argv[0]通常包含被Python解释器调用的脚本的位置。 查看sys文档了解更多详细信息。
正如@Tim和@Pat Notz指出的那样,__file__属性提供了对
模块所在的文件 加载,如果是从文件中加载的