@wbw1638

Как сделать вывод сообщения в определённую секунду?

У меня есть код:
import time
now = datetime.now() 
current_time = now.strftime("%H:%M:%S")

#Запускаем цикл для проверки времени
while True:
    time.sleep(1)
    if current_time == '16:49:00':#Выставляете ваше время
        print('text')


Если убрать секунды, то всё работает, но сообщения выводятся в течении всей минуты

Break не является решением, так как мне не нужно завершение цикла
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
import time

# Время берется 1 раз в момент запуска скрипта, чему оно будет равно?
now = datetime.now() 
current_time = now.strftime("%H:%M:%S")

# Цикл запущен и проверяет время, которое было взято 1 раз выше, что получится? Получится то, что цикл будет искать время, которое уже истекло.
while True:
    time.sleep(1)
    if current_time == '16:49:00':
        print('text')

# Так, щас 16:49:00?
# Ок, ждем 1 сек...
# Так, щас 16:49:01?
# Ок, ждем 1 сек...
# Так, щас 16:49:02?
# У нас время идет вперед или назад..? Если все таки вперед, то сможет ли оно достигнуть current_time, которое уже меньше, чем ожидаемое время..?

print() в помощь, чтобы понимать, что происходит в коде, если до полноценной отладки пока далеко:
import time
from datetime import datetime

while True:
    now = datetime.now()
    current_time = now.strftime("%H:%M:%S")

    if current_time == '17:15:00':
        print('text')
        time.sleep(1)
    else:
        print(f'Нихуа ({current_time})!')
        time.sleep(1)

# Нихуа (17:14:56)!
# Нихуа (17:14:57)!
# Нихуа (17:14:58)!
# Нихуа (17:14:59)!
# text
# Нихуа (17:15:01)! <--- Вот здесь оказывается Ваш первоначальный скрипт
# Нихуа (17:15:02)!
# Нихуа (17:15:03)! <--- Мы ждем какое время, 16:49:00?

P.S. Ваш код все таки сработает, когда пройдут сутки, но я не думаю, что так было задумано ;)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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