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.py
faz o truque, eu não sabia sobre o buffer do stdout.