定时任务清理三天前的文件

思路:写一个函数,函数里面while True循环遍历文件夹,对文件的创建日期与当前日期进行判断,超过3天则删除

def clear_task(clear_dir):
    # 参数clear_dir是需要清理的文件夹路径
    while True:
        if not os.path.exists(clear_dir):
            pass
        else:
            today_date = datetime.date.today()  # 当前日期datetime.date类型
            for root, dirs, files in os.walk(clear_dir):
                for file in files:
                    file_name = os.path.join(root, file)
                    img_creat_stamp = os.path.getctime(file_name)  # 文件创建时间
                    img_creat_loacaltime = time.localtime(img_creat_stamp)
                    img_creat_ymd_str = time.strftime('%Y-%m-%d', img_creat_loacaltime)  # 创建时间转换为年-月-日字符串类型
                    img_creat_date = datetime.date(*map(int, img_creat_ymd_str.split("-")))  # 将字符串类型转换为datetime.date类型
                    if today_date - img_creat_date > datetime.timedelta(3):
                        os.remove(file_name)
        time.sleep(50000)

上面这个方法是将两个时间转换为datetime.date类型然后用datetime.timedelta()对比实现的。我在最开始想到的是时间戳转化为整数相减的方法,后来发现是错的,比如时间戳转换后截取前8位得到整数,20220601与20220531相减计算结果大于3,而实际5月31号是6月1号的前一天,不应删除。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java中的定时任务清理缓存。下面是一个简单的示例代码,演示了如何使用Timer和TimerTask来定期执行缓存清理操作: ```java import java.util.Timer; import java.util.TimerTask; public class CacheCleaner { private Timer timer; public void startCacheCleaner() { timer = new Timer(); // 创建一个定时任务,每隔一定时间执行一次清理缓存操作 TimerTask task = new TimerTask() { @Override public void run() { // 缓存清理逻辑 clearCache(); } }; // 设置定时任务的开始延迟时间和执行间隔时间(这里设置为每隔1小时执行一次) long delay = 0; long interval = 60 * 60 * 1000; // 1小时 // 启动定时任务 timer.schedule(task, delay, interval); } public void stopCacheCleaner() { if (timer != null) { timer.cancel(); } } private void clearCache() { // 执行缓存清理操作的代码逻辑 // TODO: 在这里实现清理缓存的具体逻辑 System.out.println("清理缓存..."); } public static void main(String[] args) { CacheCleaner cacheCleaner = new CacheCleaner(); cacheCleaner.startCacheCleaner(); // 等待一段时间后停止定时任务(这里等待10秒) try { Thread.sleep(10 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } cacheCleaner.stopCacheCleaner(); } } ``` 你可以根据自己的需求,在`clearCache()`方法中实现具体的缓存清理逻辑。通过调用`startCacheCleaner()`方法,你可以启动定时任务进行定期清理缓存操作。在上面的示例中,定时任务每隔1小时执行一次清理操作,你可以根据需要修改间隔时间。 同时,通过调用`stopCacheCleaner()`方法,你可以在适当的时候停止定时任务。在示例中,我使用了一个简单的等待时间并调用了`stopCacheCleaner()`来停止定时任务,你可以根据自己的需求来决定何时停止定时任务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值