作为模块运行时,python错误处理文件路径不正确

时间:2016-05-12 07:06:46

标签: python

所以我有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

为什么以第二种方式运行它的任何想法会产生这样的结果?我应该采取另一种方式吗?

三江源。

1 个答案:

答案 0 :(得分:0)

好的我通过关注viraptors评论和python documentation来解决了这个问题。

我必须导入回溯,将回溯拆分为数组

import traceback;
tb_array = traceback.extract_tb(tb);

数组中的每个元素都是一个包含以下内容的数组:

  • 文件路径
  • 行号
  • 方法名称
  • line string