9

StreamIO のようなファイルのようなオブジェクトがあり、Python の警告モジュールにすべての警告メッセージを書き込むとします。それ、どうやったら出来るの?

4

3 に答える 3

19

warnings.showwarning ieを再割り当てしてみてください

#!/sw/bin/python2.5

import warnings, sys

def customwarn(message, category, filename, lineno, file=None, line=None):
    sys.stdout.write(warnings.formatwarning(message, category, filename, lineno))

warnings.showwarning = customwarn
warnings.warn("test warning")

すべての警告を標準出力にリダイレクトします。

于 2009-05-13T16:20:28.673 に答える
0
import sys
import StringIO

sys.stdout = StringIO.StringIO()
于 2009-05-13T17:40:52.520 に答える
0

これはテストされていないコードであり、インターフェースは現在私を逃れるよりクリーンな方法があるように見えますが、このようなものはうまくいくと思います:

import warnings

# defaults to the 'myStringIO' file
def my_warning_wrapper(message, category, filename, lineno, file=myStringIO, line=None):
    warnings.show_warning(message, category, filename, lineno, file, line)    

warnings._show_warning = my_warning_wrapper

Lib\warnings.py の中を見るだけで十分でない場合は、正しい軌道に乗ることができます。

于 2009-05-13T16:57:28.970 に答える