Al intentar escribir la salida estándar de un script de Python en un archivo de texto ( python script.py > log
), el archivo de texto se crea cuando se inicia el comando, pero el contenido real no se escribe hasta que finaliza el script de Python. Por ejemplo:
script.py:
import time
for i in range(10):
print('bla')
time.sleep(5)
se imprime en stdout cada 5 segundos cuando se llama con python script.py
, pero cuando llamo python script.py > log
, el tamaño del archivo de registro permanece cero hasta que finaliza el script. ¿Es posible escribir directamente en el archivo de registro, de modo que pueda seguir el progreso de la secuencia de comandos (por ejemplo, usando tail
)?
EDITAR Resulta que python -u script.py
hace el truco, no sabía sobre el almacenamiento en búfer de stdout.