[开发|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) 
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的paramiko库实现在Windows上与Linux机器之间的文件传输。具体步骤如下: 1. 安装paramiko库 可以使用pip命令安装paramiko库,命令为: ``` pip install paramiko ``` 2. 编写脚本 在Windows上编写一个Python脚本,使用paramiko库连接到Linux机器,然后执行文件同步命令。 以下是示例代码: ```python import os import paramiko import time # 定义本地和远程目录 local_path = '/path/to/local/dir' remote_path = '/path/to/remote/dir' # 定义Linux机器的IP地址和登录信息 ip = '192.168.1.100' username = 'username' password = 'password' # 创建SSH客户端 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(ip, username=username, password=password) # 定义同步函数 def sync_files(): # 获取本地目录下的文件列表 files = os.listdir(local_path) # 遍历本地文件列表,将文件同步到远程目录 for file in files: local_file_path = os.path.join(local_path, file) remote_file_path = os.path.join(remote_path, file) # 判断是否为目录,如果是则递归同步 if os.path.isdir(local_file_path): # 创建远程目录 stdin, stdout, stderr = client.exec_command('mkdir -p ' + remote_file_path) stderr_lines = stderr.readlines() if len(stderr_lines) > 0: print(stderr_lines) # 递归同步子目录 sync_files(local_file_path, remote_file_path) else: # 同步文件 sftp = client.open_sftp() sftp.put(local_file_path, remote_file_path) sftp.close() # 同步文件,每隔5分钟同步一次 while True: sync_files() time.sleep(300) ``` 上述代码中,定义了本地目录和远程目录的路径,以及Linux机器的IP地址和登录信息。然后通过paramiko库创建SSH客户端,连接到Linux机器。接着定义了一个同步函数,用于将本地目录下的文件同步到远程目录。在while循环中调用同步函数,每隔5分钟同步一次。 3. 运行脚本 在Windows上运行脚本即可实现定时同步文件文件夹至多台Linux机器。可以使用Windows的计划任务功能,或者使用第三方定时任务软件,如cron等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值