我需要从被叫方获取呼叫者信息(什么文件/什么行)。我了解到可以为此目的使用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()
呼叫者的帧比当前帧高一帧。您可以inspect.currentframe().f_back用来查找呼叫者的框架。然后使用inspect.getframeinfo获取调用者的文件名和行号。
inspect.currentframe().f_back
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)