[Python-es] Redireccionar el stdout
Marcos Sánchez Provencio
rapto en arrakis.es
Dom Mar 17 09:10:11 CET 2002
No es para ayudar, es para liarlo más.
¿Por qué no funciona esto?
####################################
import sys
class Output:
def __init__(self):
self.text=""
def write(self,str):
self.text+=str
class sysTrucada:
def __init__(self):
self.stdout=Output()
codigo="""
print "Hola Mundo"
print sys.stdout
"""
s=sysTrucada()
exec codigo in {'sys':s}
print ">>>>",s.stdout.text
El sáb, 16-03-2002 a las 18:18, Chema Cortés escribió:
> 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,
> --
Más información sobre la lista de distribución Python-es