В настоящее время я пишу программу на 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 и генераторам.Я собираюсь взглянуть на них для лучшего решения.