2009-05-13 5 views

答えて

11

はすなわち

#!/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") 

がstdoutにすべての警告をリダイレクトするwarnings.showwarningを再割り当てしてください。それはテストされていないコードですが、私は、このような何かが仕事だと思うと、現時点で私を見逃さきれいな方法があるようにインターフェースが見え

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内部の外観は入れ役立つはずですそれが十分でない場合、あなたは正しい道を歩いています。

0
import sys 
import StringIO 

sys.stdout = StringIO.StringIO() 
+1

だけ注 - これは、FILENOなどの方法()io.StringIOがFILENO()定義されているが実装されていないを有している、定義されていないio.StringIO StringIO.StringIO異なる実装です。 – eacousineau

関連する問題