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