Ao tentar gravar o stdout de um script Python em um arquivo de texto ( python script.py > log), o arquivo de texto é criado quando o comando é iniciado, mas o conteúdo real não é gravado até que o script Python seja concluído. Por exemplo:
script.py:
import time
for i in range(10):
print('bla')
time.sleep(5)
imprime no stdout a cada 5 segundos quando chamado python script.py, mas quando eu ligo python script.py > log, o tamanho do arquivo de log permanece zero até o script terminar. É possível gravar diretamente no arquivo de log, de forma que você possa acompanhar o progresso do script (por exemplo, usando tail)?
EDIT Acontece que python -u script.pyfaz o truque, eu não sabia sobre o buffer do stdout.