Как использовать inspect, чтобы получить информацию вызывающего абонента от вызываемого абонента в Python?
Мне нужно получить информацию о вызывающем абоненте (какой файл/какой линии) от абонента. Я узнал, что я могу использовать модуль инпек, что для целей, но не совсем так.
Как получить эту информацию с помощью 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()
4 ответа:
кадр вызывающего абонента на один кадр выше, чем текущий кадр. Вы можете использовать
inspect.currentframe().f_back
чтобы найти кадр вызывающего абонента. Тогда используйте проверка.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()) # (<frame object at 0x8ba7254>, '/home/unutbu/pybin/test.py', 10, '<module>', ['hello()\n'], 0)
Я бы предложил использовать
inspect.stack
вместо:import inspect def hello(): frame,filename,line_number,function_name,lines,index = inspect.stack()[1] print(frame,filename,line_number,function_name,lines,index) hello()