RayProgrammer
@RayProgrammer
Ищу познание в мире программирования!

Как сделать отслеживание изменений в файле Python?

Задача: Есть цикл, который ищет определённые слова в файле и есть этот самый файл 'LOG.log', в котором нужно отследить изменения не прерывая цикла и при этом, чтобы строки которые уже выводились - еще раз их не выводить. В общем, нужно сделать отслеживание изменений в файле.
Code:
word = '[CHAT]' # Word there we search
f = open('LOG.log','r') # File where searching word 
text = f.read().split('\n') # Reading a file and splitting it by delimiter ('\n')
while True: # infinite cycle
	for i in text: # Searching word
		if word in i: # If i have word
			print(i) # Printing word
  • Вопрос задан
  • 1506 просмотров
Пригласить эксперта
Ответы на вопрос 4
@zexer
Чтобы отслеживать изменения а файле нужно использовать git, а не какие-то костыли.
Ответ написан
@12rbah
Сильно зависит от того как изменяется файл и какого он будет размера.
Но в случае с логами, если происходит только добавление в конец файла, то выводите первые строки при считывании и запоминаете последнюю строчку. Потом раз в секунду проверяете размер файла, если изменяется, то читаете с той строчки, которую запомнили и выводите новые строки.
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Банально копировать последнюю версию файла и сравнивать «в лоб».
Ответ написан
Комментировать
@o5a
Если речь про файл лога, то он будет только дозаписываться, т.е. старые данные не меняются.
Так что можно просто продолжать считывать уже открытый, при каждом чтении данные будут пополняться (если они появились).
word = '[CHAT]' # Word there we search
f = open('LOG.log','r') # File where searching word
while True: # infinite cycle
    text = f.read().split('\n') # Reading a file and splitting it by delimiter ('\n')
    for i in text: # Searching word
        if word in i: # If i have word
            print(i) # Printing word
    time.sleep(1)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы