Quando si tenta di scrivere lo stdout da uno script Python in un file di testo ( python script.py > log), il file di testo viene creato all'avvio del comando, ma il contenuto effettivo non viene scritto fino al termine dello script Python. Per esempio:
script.py:
import time
for i in range(10):
print('bla')
time.sleep(5)
stampa su stdout ogni 5 secondi quando viene chiamato con python script.py, ma quando chiamo python script.py > log, la dimensione del file di registro rimane zero fino al termine dello script. È possibile scrivere direttamente nel file di registro, in modo da poter seguire l'avanzamento dello script (ad es. Utilizzando tail)?
EDIT Si scopre che python -u script.pyfa il trucco, non sapevo del buffering di stdout.