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
このコード片..出力はどうなるか
最初の print ステートメントからの出力
トレースバック (最後の最後の呼び出し): ファイル "C:\Users\manojtut\Desktop\untitled-1.py"、9 行目、p = 100/0 の ZeroDivisionError: 整数除算またはゼロによるモジュロ
2 番目の print ステートメントからの出力
トレースバック (最後の最後の呼び出し): ファイル "C:\Users\manojtut\Desktop\untitled-1.py"、9 行目、p = 100/0 の ZeroDivisionError: ゼロによる整数除算またはモジュロ トレースバック (最後の最後の呼び出し) : ファイル "C:\Users\manojtut\Desktop\untitled-1.py"、16 行目、q = 100/0 の ZeroDivisionError: 整数除算またはゼロによるモジュロ
ご覧のとおり、最初の zerodivision で発生した例外が、2 番目の print ステートメントで再度出力されていますが、これは望ましくありません。2 番目の例外のトレースバックのみを 2 番目の print ステートメントで出力できるように、最初の例外のトレースバックを何らかの方法で削除/フラッシュすることはできますか?