Por que o stdout do subprocesso para um arquivo é gravado fora de ordem?
Eu tenho um script python que chama um executável. A saída do executável é redirecionada para um arquivo de log juntamente com algumas informações sobre a hora em que foi chamado. Por exemplo, usandopython -V
como o executável para ilustrar:
import time, subprocess
with open('./LOGFILE.txt', 'a') as F:
F.write('******\n')
F.write('Events on %s :\n'%time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
EXE_output = subprocess.call(['python', '-V'], stdout=F, stderr=F)
A saída do arquivoLOGFILE.txt
é:
Python 2.7.3
******
Events on 2013-04-10 19:27:25 :
Onde eu estava esperando da seguinte forma:
******
Events on 2013-04-10 19:27:25 :
Python 2.7.3
Eu escrevi o******
e informações de horário no arquivo de log aberto antes de executar o subprocesso e redirecionar sua saída e erro para o arquivo. Por que encomendar assim? e como posso reordenar?