import os
import datetime
import logging
import timeloop
from timeloop import Timeloop
from datetime import timedelta
'''
autor lyb
qq:937091538
'''
'''
定时任务 1. while true 2.timeloop(本次采用) 3.thread 4.schedule
1.实现自动删除本地文件夹及文件--根据文件夹(20240423)进行匹配删除
2.实现根据硬盘的存储空间大小进行自动删除文件夹及文件--待完成
3.实现多个盘符之间轮询切换--待完成
4.实现备份功能--待完成
5.
'''
# 设置日志
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s ")
handler.setFormatter(formatter)
logger.addHandler(handler)
tl = Timeloop()
# 删除匹配成功的文件
def deleteFile(fileUrl):
ls = os.listdir(fileUrl)
for ll in ls:
j_path = os.path.join(fileUrl, ll) # 拼接路径
if os.path.isdir(j_path): # 判断是不是文件
deleteFile(j_path) # 递归
else:
if getFileTime() in j_path:
print(f'此文件夹包含{getFileTime()}-{j_path}') # 进行对文件进行删除
logger.info(f'此文件夹包含{getFileTime()}-{j_path}')
os.remove(j_path)
print(f'删除文件成功,文件名为:{ll}')
logger.info(f'删除文件成功,文件名为:{ll}')
os.rmdir(fileUrl)
print(f'删除文件夹:{getFileTime()}')
logger.info(f'删除文件夹:{getFileTime()}')
def getFileTime():
today = datetime.date.today()
y_day = today - datetime.timedelta(days=180) # 获取180天前日期
# print(f"获取今日文件日期:{str(today).replace('-', '')}")
# print(f"获取要删除文件日期:{str(y_day).replace('-', '')}")
return str(y_day).replace('-', '')
def getCloudSize(): # 获取硬盘容量 当容量小于1GB进行删除覆盖最早文件
print(0)
@tl.job(interval=timedelta(seconds=36000)) # 每十个小时执行一次
def job_j():
logger.info("-----------开始----------------")
logger.info(f'定时任务开始执行')
deleteFile("D:\\hc\\video")
logger.info("-----------结束----------------")
if __name__ == '__main__':
tl.start(job_j)
# getFileTime("D:\\hc\\video\\20240327")