#! python3
from contextlib import redirect_stderr
import io
f = io.StringIO()
with redirect_stderr(f):
# simulates an error
erd
機能しません。しかし、それはエラーメッセージがコマンドプロンプトにプリントアウトされたとして、動作しません:にredirect_stderrは、上で見たように、私は<code>StringIO</code>オブジェクトに標準エラー出力をリダイレクトする<code>redirect_stderr</code>関数を使用している(パイソン3.5)
Traceback (most recent call last):
File "C:\Users\max\testerr.py", line 8, in <module>
erd
NameError: name 'erd' is not defined
を私はPythonの3.5.1
64ビットと同じ結果に3.5.2
64ビットでそれをテストしました。
A similar issue in this thread
リンクされたスレッドで説明したように、私は、ファイルへの書き込みエラー試してみましたが、ファイルがスクリプトを実行した後、空になっています。
初期化の前にerdにアクセスすると思います。変数の定義を検討するか、関数呼び出しで渡されて再実行されるかどうかを確認できますか? –
'sys.stderr = io.StringIO()'の場合、エラーが引き続き発生するので、例外を捕捉しているioオブジェクトバーに格納することは冗長であるように見えます –