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. Ваш код все таки сработает, когда пройдут сутки, но я не думаю, что так было задумано ;)