2015-09-14 4 views
-2

Используя приведенный ниже код, я записываю показания времени и напряжения в файл журнала. Я замечаю, что если я «открываю» файл журнала во время работы программы, он не показывает никаких новых данных. Он показывает только те данные, которые уже были в файле logfile.txt из предыдущего запуска программы. Чтобы новые данные отображались в файле logfile.txt, я должен остановить запущенную программу (cntl-C), а затем снова открыть файл logfile.txt. Новые данные должны быть записаны где-то. Почему данные не отображаются в файле журнала?Где секретный файл журнала python?

import sys, time, signal 

    with open('logfile.txt', 'a') as f: 
     while True: 
      volts = adc.read(256, 8) 
      print >> f, time(), volts 
+3

Ну, он буферизирован, поэтому либо используйте 'open ('logfile.txt', 'a', 0)', чтобы открыть файл в небуферизованном режиме, либо очистить файл ('f.flush()') каждый раз вы хотите прочитать «живые» данные из файла из другого места. – mvdwerve

+0

Какую программу вы используете для открытия файла? Предназначено ли обновление, когда файл обновляется? Сколько данных записывается? Регистратор Python очистит каждое событие журнала. но ОС может буферизовать потоки файлов. –

+0

Я открываю файл журнала вручную с помощью мыши и просто нажимаю на его значок после поиска, если в файловом менеджере. – Rico

ответ

2

выхода сохраняется в буфере памяти, и не будет записан на диск, пока буфер не будет заполнен, или закройте файл, или вы конкретно сказать ему, чтобы сделать это. Вы не видите новый вывод, пока буфер не будет сброшен из ОЗУ.

Посмотрите метод File.flush(); Я думаю, что это то, что вам нужно.

Смежные вопросы