话不多说,先上代码,分为两部分,一个py 文件和一个ini 的配置文件
感觉看注释应该比较容易看懂,不懂的或者有不对的地方可以在评论下提出,大家互相学习
delFile.py 文件内容如下:
import time
import os
import configparser # 读取配置文件的包
import logging
# 设置日志信息格式
logging.basicConfig(filename="example.log",
level=logging.DEBUG,
format='%(asctime)s %(levelno)s %(filename)s %(process)d %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S')
# 配置文件相关
config = configparser.ConfigParser() # 生成ConfigParser 对象
config.read('config.ini', encoding='utf-8') # 读取配置文件
all_sections = config.sections() # 获取所有节点
items = config.items(all_sections[0]) # 获取节点下的键值对
# 获取所需配置的值
file = config.get(all_sections[0], 'file') # 指定目录
filesuffix = config.get(all_sections[0], 'filesuffix') # 指定格式
exittime = config.getint(all_sections[0], 'exittime') # 文件多长时间删除
timing = config.get(all_sections[0], 'timing')
# 获取文件创建至今的时间
def getfiletime(file):
# 获取创建的时间并转换为时间戳
timeArray = time.strptime(time.ctime(os.path.getctime(file)), "%a %b %d %H:%M:%S %Y")
filetime = int(time.mktime(timeArray))
# 计算创建时间戳和当前时间戳的差值
timeStamp = int(time.time()) - filetime
# 转换为天数
createtime = timeStamp / 3600 / 24
return createtime
# 删除指定后缀名,指定创建文件超过N天的文件
def delfile(file):
list = os.listdir(file)
delnum = 0 # 删除的文件个数# 获取指定目录下的所有文件名
for i in range(len(list)):
namelist = list[i].split(".")
suffix = namelist[len(namelist) - 1] # 获取后缀
filename = file + "\\" + list[i] # 文件的路径+名字
if (suffix == filesuffix) and (getfiletime(filename) > exittime):
os.remove(filename)
delnum += 1
logging.info("删除的文件是:" + list[i])
print(("删除的文件是:" + list[i]))
logging.info(("删除了%d个文件" % delnum))
# 正式使用,每天定点执行
while True:
time.sleep(0.1) # while 循环间隔 1s , 降低cpu 占用率,否则死循环一直占用cpu
time_now=time.strftime("%H:%M:%S",time.localtime(time.time())) #时间戳转换为格式化时间便于比较
if time_now==timing: #如果 时间=配置文件设定的时间 会执行任务
logging.info("开始执行定时任务")
delfile(file)
# 测试用(每分钟执行一次)
#logging.info("系统启动")
#while True:
# time.sleep(1) # while 循环间隔 1s , 降低cpu 占用率,否则死循环一直占用cpu
# time_now = time.strftime("%S", time.localtime(time.time()))
# if time_now > "50":
# logging.info("开始执行定时任务")
# delfile(file)
另外还有一个配置文件 config.ini,放到.py文件的同级目录下
[delFile]
file = D:\
filesuffix = h
exittime = 0
timing = 08:00:00