Я пытаюсь найти хороший способ считать файл журнала в режиме реального времени с помощью Python. Я хотел бы к производственным линейкам от файла журнала по одному, как он записан. Так или иначе я должен продолжать пытаться считать файл, пока он не создается, и затем продолжите к производственным линейкам, пока я не завершаю процесс. Существует ли соответствующий способ сделать это?Спасибо.
Вы можете попробовать что-то вроде этого:
import time
while 1:
where = file.tell()
line = file.readline()
if not line:
time.sleep(1)
file.seek(where)
else:
print line, # already has newline
Пример взят из здесь.
Взгляните на этот PDF, начиная со страницы 38, ~слайд I-77, и вы найдете всю необходимую информацию. Конечно, остальные слайды тоже удивительны,но те, которые конкретно касаются вашего вопроса:
import time
def follow(thefile):
thefile.seek(0,2) # Go to the end of the file
while True:
line = thefile.readline()
if not line:
time.sleep(0.1) # Sleep briefly
continue
yield line
Возможно, вы могли бы выполнить системный вызов
tail -f
с помощью os.system()