如何在Python库函数C.py中获取调用它的主文件名?
实现根据调用脚本返回对应文件名的get_my_name函数
完全可以实现,以下是C.py的具体代码:
import inspect def get_my_name(): # 获取调用栈中上层的帧信息(对应调用该函数的脚本) caller_info = inspect.stack()[1] return caller_info.filename
原理说明
inspect.stack()会返回当前程序的调用栈列表,列表中的每个元素对应一个栈帧信息:
- 索引
0对应的是get_my_name函数自身的栈帧 - 索引
1对应的是调用get_my_name的代码所在的栈帧(也就是A.py或B.py的执行上下文)
通过栈帧对象的filename属性,就能直接获取到调用脚本的文件名,从而实现运行A.py输出A.py、运行B.py输出B.py的需求。
内容的提问来源于stack exchange,提问作者jf328
相关产品推荐
相关产品推荐

