2009-05-13 10 views

Respuesta

11

Try reasignar warnings.showwarning decir

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

se redirigir todas las advertencias a la salida estándar.

0

creo que algo como esto iba a funcionar, aunque es de código no probado y la interfaz parece que hay una forma más limpia, que se me escapa en la actualidad:

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 

Un vistazo al interior Lib \ warnings.py debería ayudar a poner estás en el camino correcto si eso no es suficiente.

0
import sys 
import StringIO 

sys.stdout = StringIO.StringIO() 
+1

Sólo una nota - esta es una aplicación diferente de io.StringIO StringIO.StringIO no tiene métodos como fileno() definidos, mientras que io.StringIO tiene fileno() definido pero no implementado. – eacousineau

Cuestiones relacionadas