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 к нему доступ то получить сможет? Пробовал?