如何在Python中缩进堆栈跟踪?

2 投票
1 回答
993 浏览
提问于 2025-04-17 12:38

我用这段代码来捕捉一个异常,并打印出堆栈跟踪信息:

def logerr(stmt, e):
    try:
        do_something()
    except:
        print('##EXCEPTION in logging: ')
        exc_type, exc_value, exc_traceback = sys.exc_info()
        traceback.print_exception(exc_type, exc_value, exc_traceback, file=sys.stdout)

我得到的结果是这样的:

##EXCEPTION in logging: 
Traceback (most recent call last):
  File "C:\Users\amurty\Desktop\dev\eclipse\workspace\hhs\FeedSearch\src\main\main.py", line 18, in main
    log()
TypeError: log() takes exactly 1 argument (0 given)

但是我想让堆栈跟踪信息多一些缩进,像这样:

##EXCEPTION in logging: 
        Traceback (most recent call last):
          File "C:\Users\amurty\Desktop\dev\eclipse\workspace\hhs\FeedSearch\src\main\main.py", line 18, in main
            log()
        TypeError: log() takes exactly 1 argument (0 given)

我该怎么做呢?使用 pprint 或者 textwrap 这两个模块能帮上忙吗?

1 个回答

3

试试这个:

import traceback

def logerr(stmt, e):
    try:
        ##do something

    except:
        print '##EXCEPTION in logging: '
        for line in traceback.format_exception().splitlines():
            print '        ' + line

撰写回答