В настоящее время я пишу программу на python в системе Linux. Цель состоит в том, чтобы прочитать файл журнала и выполнить команду bash при поиске определенной строки. Файл журнала постоянно записывается другой программой. Мой вопрос:
Если я открою файл с помощью метода open(), мой файл Python будет обновлен, так как фактический файл будет записан другой программой или мне придется повторно открыть файл с временными интервалами?
Спасибо
Джим
UPDATE: Спасибо за ответы. Возможно, я должен был упомянуть, что файл записывается с помощью приложения 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 и генераторам. Я собираюсь посмотреть на них для лучшего решения.