[开发|Python] Python脚本定时删除指定目录下的文件夹及文件

代码示例

# -*- coding: utf-8 -*-
import os
import time

# 全局变量用于累计删除文件数
total_deleted_count = 0

def delete_files(dir_path, recursive=False):
    """
    删除指定目录下所有文件,并返回本次删除文件数量。

    Args:
    dir_path (str): 待扫描的目录路径
    recursive (bool, optional): 是否递归删除子目录中的文件,默认为False

    Returns:
    int: 当次删除的文件数量
    """

    deleted_count = 0

    for root, dirs, files in os.walk(dir_path):
        for file_name in files:
            file_path = os.path.join(root, file_name)

            try:
                os.remove(file_path)
                deleted_count += 1
            except OSError as e:
                # python2
                print("无法删除文件 {}: {}".format(file_path, e))
                # python3
                # print(f"无法删除文件 {file_path}: {e}")

        if not recursive:
            break

    return deleted_count


def schedule_delete(dir_path, file_pattern=None, recursive=False, interval_seconds=60):
    """
    定时执行删除文件操作,并打印当前已删除和累计删除文件数量。

    Args:
    dir_path (str): 待扫描的目录路径
    file_pattern (str, optional): 文件名匹配模式(正则表达式),默认删除所有文件
    recursive (bool, optional): 是否递归删除子目录中的文件,默认为False
    interval_seconds (int, optional): 定时任务间隔秒数,默认为60秒
    """

    global total_deleted_count

    while True:
        start_time = time.time()
        deleted_count = delete_files(dir_path, recursive)  # 移除了不必要的file_pattern参数
        total_deleted_count += deleted_count

        elapsed_time = time.time() - start_time

        # python2
        print ("删除完成,本次删除 {} 个文件,累计删除 {} 个文件,耗时 {:.2f} 秒."
               .format(deleted_count, total_deleted_count, elapsed_time))

        # python3
        # print("删除完成,本次删除 {} 个文件,累计删除 {} 个文件,耗时 {:.2f} 秒.".format(
        #    deleted_count, total_deleted_count, elapsed_time))

        time.sleep(interval_seconds - elapsed_time)


if __name__ == "__main__":
    dir_path = "/path/to/directory"
    recursive = True  # 是否递归删除子目录中的文件
    interval_seconds = 3600  # 设置定时任务间隔为1小时

    schedule_delete(dir_path, recursive, interval_seconds) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值