[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