[Python-es] Redireccionar el stdout

Chema Cortés chemacortes en wanadoo.es
Dom Mar 17 17:25:47 CET 2002


Hola, Marcos Sánchez Provencio:
En respuesta a tu mensaje del Dom 17 Mar 2002 09:10:

> 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


Me voy a arriesgar a dar una hipótesis: tu código y el comando print no 
comparten la misma definición del nombre 'sys'. El comando 'print' utiliza el 
módulo intrínseco 'sys', al que tú código también puede acceder mediante un 
"import sys".

Por lo que veo, es imposible suplir a un módulo intrínseco. Prueba a crearte 
un módulo con el nombre "sys.py" e intenta importarlo.

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