1
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 ステートメントで出力できるように、最初の例外のトレースバックを何らかの方法で削除/フラッシュすることはできますか?

4

1 に答える 1