[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