Redirigir salida estandar

Pablo Barrera González pbarrera en tsc.uc3m.es
Mie Jun 4 16:41:53 CEST 2003


On Wed, 2003-06-04 at 16:32, Diego Chaparro wrote:
> pbarrera en tsc.uc3m.es wrote:
> > On Wed, 2003-06-04 at 16:22, Diego Chaparro wrote:
> >>	¿Cómo puedo redirigir a un fichero la salida estándar de un programa? 
> >>El programa tiene muchos print, y quiero la salida del mismo se guarde 
> >>en un fichero. He probado con:
> >>	import sys
> >>	sys.stdout = open ("fichero.log", "a")
> >
> > A mi si me funciona eso. Con un print lo guarda al fichero. Lo único que
> > hay que hacer es cerrar el stdout al final:
> > sys.stdout.close()
> 
> 	El problema es que mi programa no acaba nunca, y necesito ir viendo lo 
> que va escribiendo.
> 
> >>	Pero no me escribe nada en el fichero. He visto que utilizando la 
> >>función sys.stdout.write lo haría bien aunque no lo he probado, pero no 
> >>quiero cambiar todos los print que tengo por el sys.stdout.write.
> >>
> >>	También he probado con: programa.py > fichero.log, pero tampoco 
> >>funciona :-(
>  >
> > Esto también me funciona. 
> 
> 	Imagino que será por el mismo motivo, mi programa no acaba nunca y por 
> eso no escribe en el fichero. ¿Hay alguna forma de que vaya escribiendo 
> en el fichero continuamente?
> 

Prueba a hacer sys.stdout.flush() de vez en cuando. Con esto vacía el
contenido del buffer de escritura en el disco duro. 

Con la opción de redirigir la salida con programa.py > fichero.log pasa
algo similar. Hasta que no se llena un tamaño suficiente de fichero no
se vuelca al disco duro. Lo que no sé es como forzar esta otra opción. 

> Gracias de todos modos.
> 
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
-- 
Pablo Barrera González <pbarrera en tsc.uc3m.es>
Universidad Carlos III de Madrid




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