2014-06-09 25 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!" 
相關問題