[Python-es] Redireccionar el stdout
Chema Cortés
chemacortes en wanadoo.es
Dom Mar 17 17:48:24 CET 2002
El Sáb 16 Mar 2002 19:44, Francisco Callejo escribió:
> Prueba con el módulo StringIO, que define la clase StringIO, que viene a
> ser como una cadena con métodos de fichero.
Perfecto. También he visto que no hace falta guardar los streams
(stdout,stdin,stderr) ya que el propio módulo sys guarda los valores
originales. Con todo esto, el código quedaría así de elegante:
#####################################
import sys
import StringIO
glob={}
codigo="""
print "Hola Mundo"
"""
sOut=StringIO.StringIO() # crea buffer en memoria
sys.stdout=sOut
exec(codigo,glob)
sys.stdout=sys.__stdout__
print sOut.getvalue()
sOut.close() # Libera el buffer de memoria
######################################
Saludos,
--
Chema Cortes (chemacortes en wanadoo.es) | LinuxUser#142755 - SuSE Linux 7.3
ZARALINUX http://www.zaralinux.org | "La ignorancia se apodera de quien
PYTANDO http://pytando.sf.net | se contenta con lo que sabe"
Más información sobre la lista de distribución Python-es