I need to get the caller info (what file/what line) from the callee. I learned that I can use the inspect module for that purpose, but not exactly how.
How do you get that info with inspection? Or is there any other way to get the info?
import inspect
print __file__
c=inspect.currentframe()
print c.f_lineno
def hello():
print inspect.stack
?? what file called me in what line?
hello()
The caller's frame is one frame higher than the current frame. You can use inspect.currentframe().f_back
to find the caller's frame.
Then use inspect.getframeinfo to get the caller's filename and line number.
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)