2014-06-09 29 views
1

我正在尝试获取要在两个预定义时间之间执行的命令;Python:将作业安排在两个预定义时间之间运行

这里是我迄今为止

##Time 
day_of_week = datetime.date.today().weekday() # 0 is Monday, 6 is Sunday 
time = datetime.datetime.now().time() 

if day_of_week < 5 and (time > datetime.time(17) and time < datetime.time(5)): 
    print "True" 

看来1700就好后执行,但一旦时间翻转到第二天,过去的0000不会运行在所有。 任何帮助将不胜感激。 谢谢

+0

也许类似的crontab /或的TaskScheduler这个?:https://docs.python.org/2/library/sched.html – jmunsch

+0

我计划使用cron来每小时执行脚本,但我需要能够解析日志文件,并且如果时间戳在这两次之间运行命令 – user3723008

+0

“我打算使用cron ...”注意在这种情况下它将每天运行两次,一次在5之前,17之后一次。这是你的意图吗? – miraculixx

回答

1
time > datetime.time(17) and time < datetime.time(5) 

怎么能超过17和小于5?

也许:

if ((day_of_week < 5 and time > datetime.time(17)) or 
    (0 < day_of_the_week < 6 and time < datetime.time(5))): 
+0

我同意,我只是不知道如何写它。 – user3723008

+0

为什么你在下半场改变格式? 我能够使用这种格式成功运行。如果(day_of_week <5和time> datetime.time(17))或(day_of_week <5和time user3723008

+0

@ user3723008,你想让它在周一早上运行吗?我想你想从17-05的每个工作日晚上,这意味着星期一00-05不在,但星期六00-05在。 – otus

0

问题出在你的病情(time > datetime.time(17) and time < datetime.time(5))time不能同时有一个小时> 17和< 5。

它可以帮助一步一步通过觉得这:

##Time 
    from datetime import datetime, date, time, timedelta 

    # when to run the job 
    time_of_day_min = time(17) 
    time_of_day_max = time(5) 
    weekdays_min = [0,1,2,3,4] # run Mon-Fri after 17.00 
    weekdays_max = [1,2,3,4,5] # run Tue-Sat before 05.00 

    # current day and time 
    day_of_week = date.today().weekday() # 0 is Monday, 6 is Sunday 
    now_time = datetime.now() 

    # figure out if it runs between 17.00 - 23.59, or 00.00 - 05.00 
    run_before_midnight = now_time >= time_of_day_min 
    run_after_midnight = now_time <= time_of_day_max 

    # check if conditions are met. Note the *or* 
    if (day_of_week in weekdays_min and run_before_midnight) or \ 
     (day_of_week in weekdays_max and run_after_midnight): 
     print "Running!" 
相关问题