Форум сайта python.su
Есть некая программа кототорая работая пишет в лог (конкретно это дебаг лог Firefox-а #export NSPR_LOG_MODULES=nsHttp:3).
Нужно также парсить этот лог в реальном времени - то есть python скрипт парсит лог, через некоторое время опять парсит (но нужно что б не сначала файла лога, а с того места где добавилась новая информация).
Есть также вариант что ту часть лога которую скрипт обработал можно удалить но не знаю как это сделать что б при совместном доступе все работало стабильно (мне так бы было даже лучше так как размер лога не разбухал бы).
Подскажите как лучше реализовать?
Офлайн
agryn
ну по первому пункту все просто - чиаешь файл лога, запоминаешь размер. В следующий раз смотришь - изменился ли размер, если да то перемешаешься на заранее сохраненную позицию и читаешь кусок лога и тд.
по второму пункту: если плагин держит файл открытым на запись, то у него свой “курсор” внутри файла куда ведется запись. И от того что кто то влезет и изменит содержимое файла этот курсор в последслвии неизветсно где окажется , что вероятно может привести к ошибке или к нежелаемому результату.
Офлайн
можно использовать генераторы, пример из книги “Справочник по Python”:
import time def tail(f): f.seek(0,2) while True: line = f.readline() if not line: time.sleep(0.1) continue yield line
f = open('file.log', 'r') logStr = tail(f) for line in logStr: #парсим то новую строку из лог файла, которая сейчас находится в line
Отредактировано funnyman (Июнь 15, 2013 10:13:52)
Офлайн