在 Python 中显示导致异常的源代码

Display source code causing an exception in Python

如何检索导致异常的代码行(不是行号)?

这是一次尝试。

import sys, inspect
try:
    1 / 0
except Exception as e:
    exc_type, exc_obj, exc_tb = sys.exc_info()
    code = str(inspect.getsourcelines(exc_tb.tb_frame.f_code))        

print(code)

它returns脚本的第一行,而不是导致异常的行。

(['import sys, inspect\n'], 1)

以下代码有效,但不够灵活。其他人可能有更好的解决方案。

import sys, inspect
try:
    y = 2
    a = 1 / 0
except Exception as e:
    exception_occr_at_file = inspect.trace()[0][1]
    line_no = inspect.trace()[0][2]
    code = inspect.trace()[0][4]

print(exception_occr_at_file)
print(line_no)
print(code)

#Ouput:
C:\Users\jianc\Desktop\test\test_print.py
4
['    a = 1 / 0\n']