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

如何在python中缩进堆栈跟踪?,python,exception,exception-handling,python-2.7,Python,Exception,Exception Handling,Python 2.7,环境-win7机器上的Python 2.7.2。 我的技能水平-noob 我使用以下命令捕获并打印异常堆栈跟踪- 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_va

环境-win7机器上的Python 2.7.2。 我的技能水平-noob

我使用以下命令捕获并打印异常堆栈跟踪-

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模块在此处是否有帮助?

请尝试以下操作:

import traceback

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

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

令人惊叹的。我不得不稍微调整一下代码并使用正则表达式(splitlines抛出一个错误-AttributeError:'list'对象没有属性'splitlines')这对我来说很有效-除了:print getLogStamp()+'--EXCEPTION--'+stmt+'-'+str(e)exc_type,exc_value,exc_traceback=sys.exc_info(),用于traceback.format_EXCEPTION中的行(exc_type,exc_value,exc_traceback):line=regex.sub(“”,line.strip())print'\t\t'+str(line).rstrip('\n')警告-这会破坏由回溯引起的跟踪格式,就像阶梯式选项卡一样。我仍在学习如何处理堆栈溢出问题。对于所有编辑和格式设置,我深表歉意。