GNU/Linux >> Tutoriales Linux >  >> Linux

Ver algo escrito en un archivo en vivo con cola

También es posible que deba vaciar explícitamente el búfer para que se canalice durante la generación. Esto se debe a que la salida generalmente solo se imprime cuando el búfer de la tubería se llena (que es en kilobytes, creo) y cuando finaliza el mensaje de entrada estándar. Esto es probablemente para ahorrar en lecturas/escrituras. Puede hacer esto después de cada impresión, o si está haciendo un bucle, después de la última impresión dentro del bucle.

import sys
...
print('Some message')
sys.stdout.flush()

Ejecute python con la marca sin búfer:

python -u myprog.py > output.txt

La salida se imprimirá en tiempo real.


En lugar de intentar rastrear un archivo en vivo, use tee en cambio. Fue hecho para hacer exactamente lo que estás tratando de hacer.

De camiseta de hombre:

tee(1) - página del manual de Linux

Nombre tee - leer desde la entrada estándar y escribir en la salida estándar y archivos

Sinopsis

tee [OPTION]... [FILE]...

Descripción

Copie la entrada estándar a cada ARCHIVO y también a la salida estándar.

-a, --append  
   append to the given FILEs, do not overwrite  
-i, --ignore-interrupts  
   ignore interrupt signals   
--help  
   display this help and exit  
--version
   output version information and exit

Si un ARCHIVO es -, copie nuevamente a la salida estándar.

Entonces, en su caso, ejecutaría:

python myprog.py | tee output.txt

EDITAR:como han señalado otros, esta respuesta se encontrará con el mismo problema que OP tenía originalmente a menos que sys.stdout.flush() se usa en el programa python como se describe en la respuesta aceptada de Davey. Las pruebas que hice antes de publicar esta respuesta no reflejaron con precisión el caso de uso de OP.

tee todavía se puede usar como un método alternativo, aunque menos que óptimo, para mostrar la salida mientras se escribe en el archivo, pero la respuesta de Davey es claramente la mejor y correcta.


Linux
  1. Trabajar con entrada, salida y redirección de errores en Linux

  2. ¿Colorear la salida de la cola con Sed?

  3. ¿Cómo escribo stderr en un archivo mientras uso tee con una tubería?

  4. Redirección de salida de comando a archivo y terminal

  5. ¿Es seguro abrir un archivo que está siendo escrito por un script en ejecución?

10 comandos de cola rápidos de Linux con ejemplos

Bash:escribir en archivo

Comando de cola de Linux

Bash:Agregar al archivo

8 Comando Tee de Linux con ejemplos

Comando de cola de Linux con ejemplos