Условие питон

12
D
На сайте с 28.06.2008
Offline
1032
1003

Правильно ли я прописал условие?

Мне нужно чтобы скрипт не работал в эти промежутки

12, 15 и 22 часа с 00 минут до 20 минут.

Скрипт запускается по крону каждую минуту и чтобы он например в 22.10 НЕ работал, в 15.15 НЕ работал, а если уже 22.21 или 12.40 например -то можно

Т.е. нужно проверять не тот ли сейчас час, а если тот то проверям минуты, если меньше 20 нельзя - больше, можно

import time
from datetime import datetime
now = datetime.now()


if now.hour != 12 and now.hour != 15 and now.hour != 22 and now.minute >= 20:
        ...далее код



Z
На сайте с 24.11.2008
Offline
155
#1

а если другой час, то что там случится с минутами ;)

...

можь подойдет в этих питонах чонить типа  if not((now.hour in [12,15,22]) and (now.minute < 20)):

Devvver
На сайте с 02.07.2008
Offline
635
#2
Я надеюсь проверка то в цикле?
Мой блог. Все о создании сайтов,Seo и СДЛ ( https://devvver.ru/ ) Мой телеграм канал https://t.me/seobloggers
D
На сайте с 28.06.2008
Offline
1032
#3
zyubr #:

а если другой час, то что там случится с минутами ;)

...

можь подойдет в этих питонах чонить типа  if not((now.hour in [12,15,22]) and (now.minute < 20)):

Я не знаю питон, там так можно как вы написали?

D
На сайте с 28.06.2008
Offline
1032
#4
Devvver #:
Я надеюсь проверка то в цикле?

Проверка на входе в весь остальной код скрипта, НЕ в цикле. Если проверка пройдена скрипт выполнится (а запускается он по крону раз в минуту)

Z
На сайте с 24.11.2008
Offline
155
#5
Dram #:

Я не знаю питон, там так можно как вы написали?

))) я там пока бродил по верхам, но,думаю, можно

T7
На сайте с 19.09.2018
Offline
52
#6
Dram :
and now.hour != 15 and now.hour != 22 and now.minute >= 20:

У вас условия сработает когда все and тру. Т.е когда  now.hour = 14 а минут 12 (<20) не сработает

Проще надо. Что то типа того

from datetime import datetime


now = datetime.now()
print('now.time', now.time())

failtime = [ (20, 0, 0),   (15, 0, 0),    (21, 37, 47), ]

print('failtime: ', failtime)

for fail in failtime:
    l = range(fail[1], fail[2]) if fail[1]<fail[2] else (fail[1],)
    print('Test for hour %s and minute: %s in %s' %  (
                now.hour, now.minute,  l)
        )

    if now.hour==fail[0] and now.minute in l:
        raise Exception("Now time in failtime h:%s;min_min:%s;min_max:%s" % fail)
        
print('Good year!')

Что бы это

$ python /home/py39/amtl_app/util/catload.py
now.time 22:03:54.923257
failtime:  [(20, 0, 0), (15, 0, 0), (22, 37, 47)]
Test for hour 22 and minute: 3 not in (0,)
Test for hour 22 and minute: 3 not in (0,)
Test for hour 22 and minute: 3 in range(37, 47)
Traceback (most recent call last):
  File "/home/py39/amtl_app/util/catload.py", line 25, in <module>
    raise Exception("Now time in failtime h:%s;min_min:%s;min_max:%s" % fail)
Exception: Now time in failtime h:22;min_min:37;min_max:47
T7
На сайте с 19.09.2018
Offline
52
#7
timo-71 #:
Что бы это

Чуть нот ин и ин напутал. :beer

Рекомендую обратить внимание на это

try:    
        scheduler.add_job(
            intervaljob,
            'interval',
            seconds=SECONDS,
            max_instances=MAX_INSTANCES
        )
    
        scheduler.add_job(
            parsecbrf, 'cron', month='*', day='*', hour=12, minute=31)

        scheduler.start()
    
        loop.run_forever()
    except (KeyboardInterrupt, SystemExit):

Просто запускается в фоне и каждые seconds будет пускать intervaljob, а в

month='*', day='*', hour=12, minute=31

запустит parsecbrf

User guide — APScheduler 3.8.1.post1 documentation
  • apscheduler.readthedocs.io
The preferred installation method is by using pip: If you don’t have pip installed, you can easily install it by downloading and running get-pip.py. Code examples¶ The source distribution contains the directory where you can find many working examples for using APScheduler in different ways. The examples can also be browsed online. Basic...
Z
На сайте с 24.11.2008
Offline
155
#8

чото какая-то сложная малопонятная ужасть

воробьи разорваны пушками фклочья!!!11  )))

T7
На сайте с 19.09.2018
Offline
52
#9
zyubr #:
чото какая-то сложная малопонятная ужасть

Да просто все заводим failtime, в терминах php  [ ['плохой час', 'плохая минута начало', 'плохая минута конец'], ... ]

если текущее время туда попало, то исключение. Если нет то дальше работаем.

А с if и 100500 and точно запутаетесь.

D
На сайте с 28.06.2008
Offline
1032
#10
timo-71 #:
У вас условия сработает когда все and тру. Т.е когда  now.hour = 14 а минут 12 (<20) не сработает

Как бы это и нужно ))) Я же писал

Скрипт запускается по крону каждую минуту и чтобы он например в 22.10 НЕ работал, в 15.15 НЕ работал, а если уже 22.21 или 12.40 например -то можно

А ваше "проще" просто убило ))))  Вместо 1 строки - 10 ?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий