如何在异常追溯中深入获取第二项的文件名?

时间:2017-02-15 22:02:09

标签: python python-3.x exception-handling traceback

如果我有追溯,例如:

 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?中所述。

1 个答案:

答案 0 :(得分:1)

在使用tb_next上的exc_tb前往引发异常的框架后,您需要访问相同的属性:

exc_tb.tb_next.tb_frame.f_code.co_filename

tb_next是另一个traceback对象,它包含与前一个相同的属性;它只是一个链条,你可以遵循,直到达到你需要的水平。

即使我从未使用它,但我确信traceback module如果你和它们做奇怪的事情会很方便。