Этот ответ также неверен, запись может быть разделена на 'ON' и 'E \ n', что приведет к двум строкам, где ни одно из них не совпадает.
тоящее время я пишу программу на python для системы Linux. Цель состоит в том, чтобы прочитать файл журнала и выполнить команду bash после нахождения конкретной строки. Файл журнала постоянно записывается другой программой. Мой вопрос:
Если я открою файл с помощью метода open (), будет ли обновлен мой объект Python, когда фактический файл записывается другой программой, или мне придется повторно открывать файл через определенные промежутки времени?
Спасибо
Джим
ОБНОВЛЕНИЕ: Спасибо за ответы до сих пор. Возможно, я должен был упомянуть, что файл записывается приложением Java EE, поэтому я не могу контролировать, когда в него записываются данные. В настоящее время у меня есть программа, которая повторно открывает файл каждые 10 секунд и пытается прочитать с позиции байта в файле, до которого он последний раз читал. На данный момент он просто распечатывает возвращенную строку. Я надеялся, что файл не нужно открывать заново, но команда чтения каким-то образом будет иметь доступ к данным, записанным в файл приложением Java.
#!/usr/bin/python
import time
fileBytePos = 0
while True:
inFile = open('./server.log','r')
inFile.seek(fileBytePos)
data = inFile.read()
print data
fileBytePos = inFile.tell()
print fileBytePos
inFile.close()
time.sleep(10)
Спасибо за советы по pyinotify и генераторам. Я собираюсь взглянуть на них для лучшего решения.