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