def roundTime(dt=None, roundTo=60): """Round a datetime object to any time laps in seconds dt : datetime.datetime object, default now. roundTo : Closest number of seconds to round to, default 1 minute. Author: Thierry Husson 2012 - Use it as you want but don't blame me. """ if dt == None : dt = datetime.datetime.now() seconds = (dt.replace(tzinfo=None) - dt.min).seconds rounding = (seconds+roundTo/2) // roundTo * roundTo return dt + datetime.timedelta(0,rounding-seconds,-dt.microsecond) def times10sec(startT, endT): retval = startT yield startT while startT < endT: startT = startT + datetime.timedelta(seconds=10) yield startT import csv cr01 = csv.reader(open ('c:\kewoo\eai\d20171024.0930-1055.AcurityConnector.csv')) simul = {} for i in cr01: startT = roundTime(datetime.datetime.strptime(i[4],"%Y-%m-%d %H:%M:%s")) endT = roundTime(datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%s")) for j in times10sec(startT, endT): if j in simul: simul[j] = simul[j] + 1 else: simul[j] = 0 if endT in simul: simul[endT] = simul[endT] - 1 else: simul[endT] = 0 #if i[3] == '0': # endT = roundTime(datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%s")) #else: # endT = roundTime(datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%s")) + datetime.timedelta(seconds=65) for x in simul.iteritems(): print str(x[0]), ", ", x[1]