2009-05-13 20 views

Odpowiedz

11

Spróbuj realokacja warnings.showwarning tj

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

przekieruje wszystkie ostrzeżenia na standardowe wyjście.

0

Myślę, że coś jak to będzie działać, chociaż jest to kod niesprawdzone i interfejs wygląda jak tam jest bardziej przejrzysty sposób, który mnie obecnie wymyka:

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 

Spojrzenie wewnątrz Lib \ warnings.py powinna pomóc postawić jesteś na dobrej drodze, jeśli to nie wystarczy.

0
import sys 
import StringIO 

sys.stdout = StringIO.StringIO() 
+1

Tylko uwaga - jest to inna realizacja od io.StringIO StringIO.StringIO nie ma metody, takie jak FILENO() zdefiniowane, natomiast io.StringIO ma FILENO() zdefiniowane, ale nie realizowane. – eacousineau

Powiązane problemy