首先声明一下其中所用的函数
- datetime.datetime.now() #获取当前时间,返回值的格式类似 datetime.datetime(2017, 12, 14, 1, 29, 24, 406538)
- datetime.timedelta() #设定两个时间之间的间隔,用于时间计算,可以设置的单位包括:(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0),默认都为0,timedelta内部只能存储days,seconds,microseconds,其他参数的值会自动按如下规则进行转换:
1 millisecond(毫秒)转换成 1000 microseconds(微秒)
1 minute 转换成 60 seconds
1 hour 转换成 3600 seconds
1 week转换成 7 days
- os.path.getctime() #获取文件的创建时间,返回值的格式为一个巨大的浮点数,为1970年1月1日到这个创建时间所历经的秒数
- datetime.datetime.fromtimestamp() #将os.path.getctime() 转换为跟datetime.datetime.now()一样的格式,以进行比较计算
代码实现如下:
import os, datetime
dirToBeEmptied = 'D:\\ceshi' #需要清空的文件夹
ds = list(os.walk(dirToBeEmptied)) #获得所有文件夹的信息列表
delta = datetime.timedelta(minutes=1) #设定365天前的文件为过期
now = datetime.datetime.now() #获取当前时间
# print(ds)
# print(now)
# ctime = datetime.datetime.fromtimestamp(os.path.getctime("D:\\ceshi\\1")) #获取文件创建时间
# print(ctime)
for d in ds: #遍历该列表
print(d)
os.chdir(d[0]) #进入本级路径,防止找不到文件而报错
if d[2] != []: #如果该路径下有文件
for x in d[2]: #遍历这些文件
print(x)
ctime = datetime.datetime.fromtimestamp(os.path.getctime(x)) #获取文件创建时间
print(ctime)
if ctime < (now-delta): #若创建于delta天前
os.remove(x) #则删掉
注:
此功能只能实现删除文件夹里的过期文件,如果文件夹为空,空文件夹不会删除