Deleting the used part of cStringIO.StringIO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import os, sys from cStringIO import StringIO import traceback old_stdErr = sys.stderr sys.stderr = mystdErr = StringIO() try: p = 100/0 except Exception: traceback.print_exc(file=sys.stderr) print mystdErr.getvalue() ### -- 1st Print statement try: q = 100/0 except Exception: traceback.print_exc(file = sys.stderr) print mystdErr.getvalue() ### -- 2nd Print statement |
这段代码……输出将是什么
从第一个打印语句输出回溯(最近一次呼叫的最后一次):文件"C:usersmanojtutdesktopuntitled-1.py",第9行,inP=100/0零分割错误:整数除以或模除以零
第二个打印语句的输出回溯(最近一次呼叫的最后一次):文件"C:usersmanojtutdesktopuntitled-1.py",第9行,inP=100/0零分割错误:整数除以或模除以零回溯(最近一次呼叫的最后一次):文件"C:usersmanojtutdesktopuntitled-1.py",第16行,inq=100/0零分割错误:整数除以或模除以零
如您所见,在第1个零除法中遇到的异常将在第二个print语句中再次打印,我不希望这样做。我是否可以以某种方式消除/清除第一个异常的回溯,以便在第二个print语句中只打印第二个异常的回溯?
添加:
1 2 | mystdErr.reset() mystdErr.truncate() |
在第二个街区之前。