Читать последнюю строку из файла и выводить её, при этом НЕ выводить если строка не обновилась. Python
Есть файл .log в который изредка заносится новая строка. Задача в том, чтобы выводить в консоль строку, только что добавленную в файл. Т.е должен быть цикл который считывает последнюю строку из файла и сравнивает её с прошлой, если она совпадает, то не выводить ничего, если же отличается, вывести в консоль новую строку. Надеюсь описал задачу понятно.
Ответы (1 шт):
Автор решения: NChechulin
→ Ссылка
Накидал простой код. Конечно, он неэффективный, но пока что ничего лучше предложить не могу.
import os
import time
FILE_PATH = 'Путь к файлу'
old_file_size = 0
lines_in_file = 0
last_line = ''
def file_changed():
global old_file_size
new_file_size = os.path.getsize(FILE_PATH)
if new_file_size != old_file_size:
old_file_size = new_file_size
return True
return False
if __name__ == "__main__":
while True:
if file_changed():
lines = []
with open(FILE_PATH, 'r') as f:
lines = f.readlines()
for line in lines[lines_in_file:]:
print('Добавлена новая строка: ', line, end='')
lines_in_file = len(lines)
print('\n--------------------------------')
time.sleep(1)