from datetime import timedelta def daterange(begin, end, delta = timedelta(1)): """Form a range of dates and iterate over them. Arguments: begin -- a date (or datetime) object; the beginning of the range. end -- a date (or datetime) object; the end of the range. delta -- (optional) a timedelta object; how much to step each iteration. Default step is 1 day. Usage: """ if not isinstance(delta, timedelta): delta = timedelta(delta) ZERO = timedelta(0) if begin < end: if delta <= ZERO: raise StopIteration test = end.__gt__ else: if delta >= ZERO: raise StopIteration test = end.__lt__ while test(begin): yield begin begin += delta