感谢Alex的指导,以下是代码:
def trimmedexceptions(type, value, tb, pylibdir=None, lev=None): """trim system packages from the exception printout""" if pylibdir is None: import traceback, distutils.sysconfig pylibdir = distutils.sysconfig.get_python_lib(1,1) nlev = trimmedexceptions(type, value, tb, pylibdir, 0) traceback.print_exception(type, value, tb, nlev) else: fn = tb.tb_frame.f_pre.co_filename if tb.tb_next is None or fn.startswith(pylibdir): return lev else: return trimmedexceptions(type, value, tb.tb_next, pylibdir, lev+1)import syssys.excepthook=trimmedexceptions# --- test pre ---def f1(): f2()def f2(): f3()def f3(): import xmlrpclib proxy = xmlrpclib.ServerProxy('http://nosuchserver') proxy.f()f1()产生以下堆栈跟踪:
Traceback (most recent call last): File "./tsttraceback.py", line 47, in <module> f1() File "./tsttraceback.py", line 40, in f1 def f1(): f2() File "./tsttraceback.py", line 41, in f2 def f2(): f3() File "./tsttraceback.py", line 45, in f3 proxy.f()gaierror: [Errno -2] Name or service not known



