Python - Как отправлять команду на print из вечного цикла while только в случае изменения переменной в цикле?

Новичок в python, есть такой лёгкий парсер, который читает файл лога и постоянно возвращает либо 1, либо 2

import time
import os

tot_state = 0
sts = 'Check'
sts2 = 'Sport'
ans = open('logs.txt', encoding='utf-8')
while True:
    time.sleep(1)
    for line in ans:
        for word in line.split():
            if sts2 in word and sts != line.split()[15]:
                 stroki = line.split()
                 act_state = stroki[15]
    if act_state in ('One', 'Two', 'Three', 'Four'):
        tot_state = 2
    else:
        tot_state = 1
    print(tot_state)

Задача получать не постоянно (каждую секунду - time.sleep(1)) значения 1 или 2, а только в случае изменения этого значения. Пытался поверх этого цикла повесить ещё один, но что-то не получается, буду благодарен любым идеям или готовому решению.


Ответы (2 шт):

Автор решения: CrazyElf

Перед тем как менять tot_state сохраните его в другую переменную, например save_tot_state. А перед печатью сравнивайте сохранённый tot_state и текущий. Если не совпадают - печатайте.

→ Ссылка
Автор решения: Gh0sTG0
import time
import os

tot_state = 0
old_state = 0
sts = 'Check'
sts2 = 'Sport'
ans = open('logs.txt', encoding='utf-8')
while True:
    time.sleep(1)
    for line in ans:
        for word in line.split():
            if sts2 in word and sts != line.split()[15]:
                 stroki = line.split()
                 act_state = stroki[15]
    if act_state in ('One', 'Two', 'Three', 'Four'):
        tot_state = 2
    else:
        tot_state = 1
    if tot_state != old_state:
        print(tot_state)
        old_state = tot_state

Как то так должно, но не тестировал.

К слову, а то что должно изменять logs к нему доступ то получить сможет? Пробовал?

→ Ссылка