所以我有2个文件。
test.py
import sys
import error_handler
sys.excepthook = error_handler;
value = 23/0; #this line will throw Zero division error
error_handler.py
def custom_error_handler(ex_class, ex, tb):
fileName = os.path.split(tb.tb_frame.f_code.co_filename)[1];
lineNo = tb.tb_lineno;
print fileName;
print lineNo;
这些是我运行文件时以及作为模块运行时的输出。
python test.py
test.py
4
但如果我跑
python -m test
runpy.py
162
为什么以第二种方式运行它的任何想法会产生这样的结果?我应该采取另一种方式吗?
三江源。
答案 0 :(得分:0)
好的我通过关注viraptors评论和python documentation来解决了这个问题。
我必须导入回溯,将回溯拆分为数组
import traceback;
tb_array = traceback.extract_tb(tb);
数组中的每个元素都是一个包含以下内容的数组: