小编典典

如何在Python中使用inspect从被呼叫者获取呼叫者的信息?

python

我需要从被叫方获取呼叫者信息(什么文件/什么行)。我了解到可以为此目的使用inpect模块,但不能完全使用它。

如何使用inspect获取那些信息?还是有其他方法来获取信息?

import inspect

print __file__
c=inspect.currentframe()
print c.f_lineno

def hello():
    print inspect.stack
    ?? what file called me in what line?

hello()

阅读 247

收藏
2020-12-20

共1个答案

小编典典

呼叫者的帧比当前帧高一帧。您可以inspect.currentframe().f_back用来查找呼叫者的框架。然后使用inspect.getframeinfo获取调用者的文件名和行号。

import inspect

def hello():
    previous_frame = inspect.currentframe().f_back
    (filename, line_number, 
     function_name, lines, index) = inspect.getframeinfo(previous_frame)
    return (filename, line_number, function_name, lines, index)

print(hello())

# ('/home/unutbu/pybin/test.py', 10, '<module>', ['hello()\n'], 0)
2020-12-20