2009-05-13 39 views

cevap

11

deneyin warnings.showwarning yani

#!/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'a tüm uyarıları yönlendirir yeniden atama. o denenmemiş kod ve şu anda bana eludes daha temiz bir yol var gibi arayüzü görünüyor olsa

0

Ben böyle bir şey işe yarar mı:

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 içindeki bir bakış koymak yardımcı olmalıdır Eğer bu yeterli değilse doğru yoldasınız.

0
import sys 
import StringIO 

sys.stdout = StringIO.StringIO() 
+1

Sadece bir not - Bu io.StringIO tanımlanan Fileno() var ama uygulanmadı ise StringIO.StringIO, böyle fileno gibi yöntemleri() tanımlı yok io.StringIO farklı bir uygulamasıdır. – eacousineau

İlgili konular