Читать последнюю строку из файла и выводить её, при этом НЕ выводить если строка не обновилась. 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)
→ Ссылка