BVT将每天检出并运行单元测试的源代码放入一个以日期命名的文件夹中,每个文件夹都很大,因此需要及时清除比较老的文件夹以节约磁盘空间,例如今天是5月11日,bvt运行目录e:\bvt_build下有如下文件夹和文件:
2011-04-18\
2011-04-19\
2011-04-22\
2011-04-25\
2011-04-27\
2011-05-10\
2011-05-09\
2011-05-08\
backup\
note.txt
现在的要求是仅保留今天、昨天和前天共3天的文件夹,其余文件夹删除(文件都保留),技术关键有两点:一是怎样将字符串形式的日期转换为可以用来做减法的date对象,以便判断与今天的间隔,这里采用的方法是:先将字符串转换为一个datetime对象,然后转换为一个timestamp(实数),再将timestamp转换为date对象;二是怎样将时间间隔(timedelta)对象转换为整型数以便进行比较,这里用的方法是得到timedelta对象后取其days属性。代码如下:
import os,shutil,time
from datetime import datetime, timedelta, date
today = date.today()
sub_items = os.listdir('e:/bvt_build')
for item in sub_items:
try:
timeFloat = time.mktime(time.strptime(item, "%Y-%m-%d"))
the_day = date.fromtimestamp(timeFloat)
time_span = (today - the_day).days
if time_span > 2:
shutil.rmtree(os.path.join('e:/bvt_build',item))
except:
continue
运行后的结果如下:
2011-05-09\
2011-05-10\
backup\
note.txt