用python批量查询删除重复word

如果你有几百个文件,并希望删除重复的文件(只保留一个副本),可以通过计算每个文件的MD5值来判断哪些文件是重复的,然后删除重复文件。以下是一个Python脚本示例,用于处理这种情况:

Python脚本实现

import hashlib
import os
from collections import defaultdict

def calculate_md5(file_path):
    """计算文件的MD5值"""
    md5_hash = hashlib.md5()
    try:
        with open(file_path, "rb") as f:
            for chunk in iter(lambda: f.read(4096), b""):
                md5_hash.update(chunk)
        return md5_hash.hexdigest()
    except FileNotFoundError:
        print(f"文件 {file_path} 未找到!")
        return None
    except Exception as e:
        print(f"读取文件 {file_path} 时出错:{e}")
        return None

def remove_duplicate_files(directory):
    """删除目录中的重复文件,只保留一个副本"""
    # 用于存储MD5值和对应的文件路径
    md5_dict = defaultdict(list)

    # 遍历目录中的所有文件
    for root, _, files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root, file)
            md5_value = calculate_md5(file_path)
            if md5_value:
                md5_dict[md5_value].append(file_path)

    # 删除重复文件,只保留一个副本
    for md5_value, file_paths in md5_dict.items():
        if len(file_paths) > 1:  # 如果有重复文件
            print(f"找到重复文件,MD5: {md5_value}")
            for file_path in file_paths[1:]:  # 保留第一个文件,删除其余文件
                print(f"删除重复文件: {file_path}")
                os.remove(file_path)

    print("重复文件处理完成!")

# 示例用法
directory = "path/to/your/files"  # 替换为你的文件目录路径
remove_duplicate_files(directory)

脚本说明:

  1. calculate_md5函数:计算单个文件的MD5值。
  2. remove_duplicate_files函数
    • 遍历指定目录及其子目录中的所有文件。
    • 使用defaultdict存储每个文件的MD5值和对应的文件路径。
    • 如果某个MD5值对应多个文件路径,说明这些文件是重复的。
    • 保留第一个文件,删除其余重复文件。
  3. 错误处理:脚本会跳过无法读取的文件,并输出错误信息。
  4. 安全性:在删除文件之前,脚本会打印出要删除的文件路径,方便用户确认。

使用方法:

  1. directory变量设置为包含文件的目录路径。
  2. 运行脚本后,它会自动检测并删除重复文件,只保留一个副本。

注意事项:

  • 备份重要文件:在运行脚本之前,建议备份重要文件,以防误删。
  • 文件类型:此脚本适用于所有类型的文件,不仅仅是Word文档。
  • 性能优化:如果文件数量非常多,计算MD5可能会花费一些时间,但分块读取的方式可以避免内存问题。

运行脚本后,重复的文件将被删除,只保留一个副本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值