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.py
fa il trucco, non sapevo del buffering di stdout.