Python:如何在函数中打印调用该函数的文件路径?
获取调用函数的文件路径解决方案
直接用Python自带的inspect标准库就能实现,不用额外安装第三方包。
具体代码实现:
- 修改
/b/b.py中的foo()函数:
import inspect def foo(): # 获取当前调用栈信息 stack = inspect.stack() # 调用栈的第二个元素对应调用foo的上下文(第一个是foo自身的栈帧) caller_info = stack[1] # 提取调用者的文件路径 caller_path = caller_info.filename print(f"调用该函数的文件路径:{caller_path}")
- 在
/a/a.py中正常导入并调用:
from b.b import foo foo()
原理说明:
inspect.stack()会返回当前的调用栈列表,每个元素对应一个栈帧对象。索引0是foo函数自身的栈帧,索引1就是触发foo调用的代码所在的栈帧,从这个栈帧里就能直接提取出调用者的文件路径。
如果是多层嵌套调用(比如A文件调用B文件的函数,B再调用foo),只需要根据调用层级调整栈帧的索引即可。
内容的提问来源于stack exchange,提问作者黯星座
相关产品推荐
相关产品推荐

