ylab examples color python inspect

python - examples - r plotly axis format



¿Cómo se usa inspeccionar para obtener la información de la persona que llama de callee en Python? (4)

El fotograma de la persona que llama es un fotograma más alto que el fotograma actual. Puede usar inspect.currentframe().f_back para encontrar el marco de la persona que llama. Luego use inspect.getframeinfo para obtener el nombre de archivo y el número de línea de la persona que llama.

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)

Necesito obtener la información de la persona que llama (qué archivo / qué línea) de callee. Aprendí que puedo usar el módulo inpect para eso, pero no exactamente cómo.

¿Cómo obtener esa información con inspeccionar? ¿O hay alguna otra forma de obtener la información?

import inspect print __file__ c=inspect.currentframe() print c.f_lineno def hello(): print inspect.stack ?? what file called me in what line? hello()


Publiqué una envoltura para inspeccionar con direccionamiento simple de bastidor que cubre el marco de la pila mediante un único parámetro spos :

Por ejemplo, pysourceinfo.PySourceInfo.getCallerLinenumber(spos=1)

donde spos=0 es la función lib, spos=1 es la persona que llama, spos=2 la persona que llama, el que llama, etc.


Si la persona que llama es el archivo principal, simplemente use sys.argv [0]


Sugeriría utilizar inspect.stack en inspect.stack lugar:

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()