如果我有追溯,例如:
Traceback (most recent call last):
File "...\overall_input.py", line 5, in setup_data
MODULE1.function_name()
File "...\MODULE1.py", line 5, in function_name
value = 1/0
如何深入获取第二个文件的名称 - 即MODULE1.py
?
作为参考,我知道我可以通过捕获异常然后使用:
来获取第一个文件(即overall_input.py
)
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
如答案Python When I catch an exception, how do I get the type, file, and line number?中所述。
答案 0 :(得分:1)
在使用tb_next
上的exc_tb
前往引发异常的框架后,您需要访问相同的属性:
exc_tb.tb_next.tb_frame.f_code.co_filename
tb_next
是另一个traceback
对象,它包含与前一个相同的属性;它只是一个链条,你可以遵循,直到达到你需要的水平。
即使我从未使用它,但我确信traceback
module如果你和它们做奇怪的事情会很方便。