获取重复的文件

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 使用 Python 3.10+ 的程序找出图片样本中的重复文件,依赖包 `NStudyPy`。通过计算文件的 MD5 值来识别重复项。核心函数 `get_repeat_file` 接受路径和递归选项,返回一个字典,键为 MD5,值为相同 MD5 的文件列表。`get_file_list` 和 `get_md5` 函数留待后续解释。安装 `NStudyPy`:`pip install -U NStudyPy`。

获取重复的文件

背景和环境说明

本程序使用 python 3.10+
机器学习,样本处理过程中会有重复的数据。这里的样本是图片,本程序根据文件MD5 获取重复文件。

依赖包下载

pip install -U NStudyPy

使用

from NStudyPy import PyFile

if __name__ == '__main__':
    PyFile.get_repeat_file(r'F:\temp\cards', is_recursive=True)

is_recursive 参数来限定是否递归子目录

核心源码

def get_repeat_file(path: str, is_recursive=True) -> dict:
    """
    获取重复文件
    :param path: 路径
    :param is_recursive:  是否递归
    :return: dict {"md5" : [file1,file2]}
    """
    file_dict = dict()
    for f in get_file_list(path, is_recursive):
        md5 = get_md5(f)
        if md5 not in file_dict:
            file_dict[md5] = [f]
        else:
            file_dict[md5].append(f)
    repeat_files = dict()
    for k, v in file_dict.items():
        if len(v) > 1:
            repeat_files.update({
   k: v})
            print(f'{k} {len(v)}')
    # return list(filter(lambda x: len(x) > 1, file_dict.values()))
    return repeat_files

get_file_list 获取文件 , 参加下篇随笔来介绍。
get_md5 获取文件MD5 , 参加下篇随笔来介绍。

目录
相关文章
|
7月前
|
算法 前端开发
在系统中查找重复文件
在系统中查找重复文件
77 0
|
18天前
|
供应链 关系型数据库 MySQL
可重复读解决了哪些问题
在数据库事务处理中,隔离级别是一个核心概念,它决定了事务在并发执行时如何相互隔离。MySQL的隔离级别之一“可重复读(REPEATABLE READ)”解决了多个并发事务中的数据一致性问题。本文将详细探讨可重复读隔离级别解决了哪些问题。
|
6月前
|
机器学习/深度学习 Python
删除指定文件夹重复的文件
这是一个Python脚本,用于删除指定文件夹(包括子目录)中的重复图片文件,基于文件的MD5值。程序依赖`NStudyPy`库,可通过`pip install -U NStudyPy`安装。核心函数`delete_repeat_file`接收路径和是否递归参数,调用未展示的`get_repeat_file`函数获取重复文件并删除。
54 1
|
7月前
|
存储 弹性计算 运维
从文件中删除重复的行
【4月更文挑战第29天】
49 1
|
7月前
|
存储 算法 数据处理
删除重复数字
删除重复数字
|
存储 JavaScript 前端开发
过滤掉数组中重复的元素
过滤掉数组中重复的元素
53 0
|
消息中间件 数据采集 Kafka
每次join之后没有正确处理数据的重复或缺失情况
每次join之后没有正确处理数据的重复或缺失情况
128 1
|
设计模式 消息中间件 JavaScript
干掉 “重复代码”,这三种方式绝了!
干掉 “重复代码”,这三种方式绝了!
36965 2
干掉 “重复代码”,这三种方式绝了!
|
算法
【递归可以干什么】1#重复执行某种模式
【递归可以干什么】1#重复执行某种模式
86 0
|
数据采集 JSON 数据格式
一日一技:如何处理配置文件中的重复值?
一日一技:如何处理配置文件中的重复值?
131 0