所以我有一个脚本,具有日期参数不同的功能,我希望它循环01-01-2012到06-09-2012不包括周末.我试图找出一种方法,我可以使用时间增量,因为我的脚本输出文件与文件名称中使用的日期,例如:
- items = (functions.getItems(item,date)
- print items
- test = sum(abs(l[-1]) for l in items)
- total = open('total' +str(datetime.today- datetime.timedelta(1)),'a')
我想要timedelta(1)循环遍历每个日期,以便输出文件的格式为total2012-01-01的第一天,循环,直到创建文件total2012-06-09. Item的date参数也是MM-DD-YYYY的格式
我以为我可以这样做:
- sd = 01-01-2012
- ed = 06-09-2012
- delta = datetime.timedelta(days=1)
- diff = 0
- while sd != ed
- # do functions
- # (have output files (datetime.today - datetime.delta(diff))
- diff +=1
- sd+=delta
所以本质上我只是想弄清楚如何循环使功能从01-01-2012开始,结束于06-10-2012,不包括周末.我无法弄清楚如何排除周末,以及如何让它按正确的顺序循环
谢谢
解决方法
使用
datetime.weekday()
方法.它返回值在零到六之间,与平日相关.星期六值为5,星期日值为6;因此,如果您在出现这些值时跳过操作,则可以跳过周末:
- start = datetime(2012,1,1)
- end = datetime(2012,10,6)
- delta = timedelta(days=1)
- d = start
- diff = 0
- weekend = set([5,6])
- while d <= end:
- if d.weekday() not in weekend:
- diff += 1
- d += delta