All pastes #16672 Raw Edit

chlamydia_cleanup.py

public python v1 · immutable
#16672 ·published 2005-07-01 22:00 UTC
rendered paste body
import reimport dircachedays_in_months      = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]days_in_months_leap = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]def leap_year(year):        if year % 4 == 0:                if year % 100 != 0 or year % 400 == 0:                        return True                else:                        return False        else:                return Falsedef date_dist(date1, date2):        if date1 < date2:                sign = -1                date1, date2 = date2, date1        else:                sign = 1        year1  = int(date1[0:4])        month1 = int(date1[4:6])        day1   = int(date1[6:8])        year2  = int(date2[0:4])        month2 = int(date2[4:6])        day2   = int(date2[6:8])        year = year2        daycount = 0        while year <= year1:                if(leap_year(year)):                        daycount += 366                else:                        daycount += 365                year += 1        if leap_year(year2):                my_days = days_in_months_leap        else:                my_days = days_in_months        month1 -= 1        month2 -= 1        month = 0> less cleanup.py import reimport dircachedays_in_months      = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]days_in_months_leap = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]def leap_year(year):        if year % 4 == 0:                if year % 100 != 0 or year % 400 == 0:                        return True                else:                        return False        else:                return Falsedef date_dist(date1, date2):        if date1 < date2:                sign = -1                date1, date2 = date2, date1        else:                sign = 1        year1  = int(date1[0:4])        month1 = int(date1[4:6])        day1   = int(date1[6:8])        year2  = int(date2[0:4])        month2 = int(date2[4:6])        day2   = int(date2[6:8])        year = year2        daycount = 0        while year <= year1:                if(leap_year(year)):                        daycount += 366                else:                        daycount += 365                year += 1                if leap_year(year2):                my_days = days_in_months_leap        else:                 my_days = days_in_months        month1 -= 1        month2 -= 1        month = 0        while month < month2:                daycount -= my_days[month]                month += 1                daycount -= day2        if leap_year(year1):                my_days = days_in_months_leap        else:                 my_days = days_in_months        month = 11        while month >= month1:                daycount -= my_days[month]                month -= 1        daycount += day1        return daycount*signfile_re = re.compile(r'2CSNAP-([0-9]{8})-([0-9]{4})-([^.]+)\.iso\.(bz2|gz)')def cmp_filtered(filt1, filt2):        if filt1.date != filt2.date:                return filt1.date - filt2.date        else:                return filt1.time - filt2.timeclass filtered_file(object):        cmp = cmp_filtered        def __init__(self, name='', date='', time='', tag=''):                self.name = name                self.date = date                self.time = time                self.tag = tagfile_list = dircache.listdir('.')[:]filtered_list = []for file_name in file_list:        file_match = file_re.match(file_name)        if file_match:                fname = file_match.string                fdate = int(file_match.expand(r'\1'))                ftime = int(file_match.expand(r'\2'))                ftag  = file_match.expand(r'\3')                filtered_list.append(filtered_file(fname, fdate, ftime, ftag))tag_set = set([x.tag for x in filtered_list])tag_dict = {}for tag in tag_set:        tag_dict[tag] = []for file in filtered_list:        tag_dict[file.tag].append(file)for key in tag_dict.keys():        tag_dict[key].sort(cmp=filtered_file.cmp, reverse=True)        keep_count=0        last_date=-1        list_len = len(tag_dict[key])        remove_list = []        for i,file in enumerate(tag_dict[key]):                if i < list_len - 1:                        distance = date_dist(str(file.date), str(tag_dict[key][i+1].date))                else:                        distance = 30 #save the last one for historical reasons                if keep_count < 30:                        if last_date == file.date:                                #print "remove",                                remove_list.append(file.name)                                pass                        else:                                keep_count += 1                                #print "keep",                                #keep_list.append(file)                                last_date = file.date                elif keep_count < 45:                        if date_dist(str(last_date),str(file.date)) + distance <= 7:                                #print "remove",                                remove_list.append(file.name)                                pass                        else:                                keep_count += 1                                #print "keep",                                #keep_list.append(file)                                last_date = file.date                else:                         if date_dist(str(last_date),str(file.date)) + distance <= 30:                                #print "remove"                                remove_list.append(file.name)                                pass                        else:                                #keep_list.append(file)                                #print "keep"                                last_date = file.date                #print "%s made on %d is #%d" % (file.tag, file.date, i)                #print key        #print "------------------"        #for dist in [date_dist(str(keep_list[i].date),         #                       str(keep_list[i+1].date)) for i in range(0, len(keep_list) - 1)]:        #print dist        for filename in remove_list:                print filename