Python中如何从被导入文件获取调用文件的路径?
解决在b.py中获取a.py路径的问题
方案一:在a.py中主动传递自身路径给b模块
修改a.py,先获取自身绝对路径,再导入b并传递该路径:
import sys import os sys.path.append("path") # 获取a.py的绝对路径 a_script_path = os.path.realpath(__file__) import b # 将路径传递给b模块 b.a_path = a_script_path
在b.py中直接使用该变量:
# 打印从a.py传递过来的路径 print(a_path)
方案二:通过调用栈获取调用者(a.py)的路径
在b.py中利用Python的调用栈API,提取导入它的a.py的路径:
import os import sys def get_a_script_path(): # 获取调用栈第二层(对应a.py导入b时的上下文) caller_frame = sys._getframe(1) # 从调用栈信息中提取a.py的路径 caller_path = caller_frame.f_code.co_filename return os.path.realpath(caller_path) # 调用函数获取并打印a.py路径 print(get_a_script_path())
注意事项
- 方案一逻辑清晰、耦合性低,推荐优先使用;
- 方案二依赖Python调用栈实现,若后续版本调整相关API,可能出现兼容性问题。
内容的提问来源于stack exchange,提问作者Zh.
相关产品推荐
相关产品推荐

