Redireccionar el stdout
Chema Cortés
chemacortes en wanadoo.es
Sab Mar 16 18:18:08 CET 2002
Hola a todos:
Tengo código python en una cadena de texto y quiero capturar la salida de la
ejecución. Con el código en fichero existen funciones que te dan la salida
para que la puedas procesar, pero no he encontrado una similar para cuando
tienes el código en una cadena.
Sólo se me ocurre utilizar una clase para sustituir el sys.stdout durante la
ejecución de la cadena:
import sys
class Output:
def __init__(self):
self.text=""
def write(self,str):
self.text+=str
glob={}
codigo="""
print "Hola Mundo"
"""
s=Output()
save_stdout=sys.stdout
sys.stdout=s
exec(codigo,glob)
sys.stdout=save_stdout
print s.text
Me parece que me estoy complicando demasiado, ¿existe alguna otra forma más
sencilla o voy por el camino correcto?
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