Redireccionar el stdout

Francisco Callejo fcallejo en arrakis.es
Dom Mar 17 13:41:52 CET 2002


El domingo, 17 de marzo de 2002, Marcos Sánchez Provencio escribió:
> 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
> 

Pues no lo sé, pero si sustituyes la variable `codigo' así, sí funciona:

codigo="""
sys.stdout.write("Hola Mundo\n")
sys.stdout.write(str(sys.stdout) + "\n")
"""

Supongo que el funcionamiento de `print' no es simplemente escribir en
sys.stdout.

-- 
Francisco Callejo Giménez
fcallejo en arrakis.es
Linux registered user #53999


Más información sobre la lista de distribución Python-es