2016-08-03 35 views
1

我試圖做一個腳本,將運行每隔一個週末,我已經嘗試使用datetime(我在互聯網上找到的解決方案,同樣),但它總是打印整個星期。返回True每隔一個週末,返回False任何其他日子

from datetime import date, timedelta 
reference_monday = date(2016, 1, 8)  # any monday of a "week one" 

schedule = [[True, True, True, True, True, True, True], 
      [True, True, True, True, True, False, False]] 

def check_date(d): 
    return schedule[abs(d - reference_monday).days/7 % 2][d.weekday()] 

start = date(2012, 6, 4) 

for w in range(6): 
    thisweek = start + timedelta(weeks=w) 
    print 'week of', thisweek, ':', 
    print ','.join(str(check_date(thisweek + timedelta(days=d))) for d in range(7)) 

返回

week of 2012-06-04 : True,True,True,True,True,True,True 
week of 2012-06-11 : True,True,True,True,True,False,False 
week of 2012-06-18 : True,True,True,True,True,True,True 
week of 2012-06-25 : True,True,True,True,True,False,False 
week of 2012-07-02 : True,True,True,True,True,True,True 
week of 2012-07-09 : True,True,True,True,True,False,False 

我想它返回true或false,這取決於當前的一天。

+1

值得使用'cron','Task Scheduler'或類似的工具。已經爲你安排了很多東西。 「 – AlG

+1

」,但它總是打印整個星期。「嗯,這就是我期望的...... ..這周+時間(天= d)))在範圍內(7)'做。函數本身每次都會返回一個布爾值,您每週只需調用它7次。 –

回答

0

正如評論所述,有更好的替代方案來調度任務。

這是你想要的嗎?

def check_date(d): 
    return not schedule[abs(d - reference_monday).days/7 % 2][d.weekday()] 

輸出

week of 2012-06-04 : False,False,False,False,False,False,False 
week of 2012-06-11 : False,False,False,False,False,True,True 
week of 2012-06-18 : False,False,False,False,False,False,False 
week of 2012-06-25 : False,False,False,False,False,True,True 
week of 2012-07-02 : False,False,False,False,False,False,False 
week of 2012-07-09 : False,False,False,False,False,True,True 

我想它返回true或false,這取決於當天

start = date(2012, 6, 4) 
for w in range(6): 
    thisweek = start + timedelta(weeks=w) 
    print 'week of', thisweek, ':', 

    # Only Saturday and Sunday 
    run_sat = check_date(thisweek + timedelta(days=5)) 
    run_sun = check_date(thisweek + timedelta(days=6)) 

    print "{:5} | {:5}".format(str(run_sat), str(run_sun)) 

輸出

week of 2012-06-04 : False | False 
week of 2012-06-11 : True | True 
week of 2012-06-18 : False | False 
week of 2012-06-25 : True | True 
week of 2012-07-02 : False | False 
week of 2012-07-09 : True | True 
相關問題