程序中的日志打印,或者消息上传,比如kafka消息等等。经常上传的消息中需要上传堆栈信息中的文件名、行号、上层调用者等具体用于定位的消息。Python提供了以下两种方法:
sys._getframe
, 基础方法inspect.currentframe
, 推荐方法,提供除了sys._getframe
方法之外更多的frame相关的方法
具体使用如下
使用sys._getframe
私有方法
具体使用方法如下:
import os
import sys
def get_cur_info():
"""
获取调用时的文件名,行号,上层调用者的名称
:return: 文件名,行号,上层调用者名称
"""
try:
current_frame = sys._getframe(2)
return os.path.basename(current_frame.f_code.co_filename), current_frame.f_lineno, current_frame.f_code.co_name
except ValueError:
return 'unknown', 0, 'unknown'
具体的函数输出结果演示可以参见下面的inspect模块结果
使用inspect
模块(推荐)
相比于