获取重复的文件

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 使用 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 , 参加下篇随笔来介绍。

目录
相关文章
|
1月前
|
算法 前端开发
在系统中查找重复文件
在系统中查找重复文件
33 0
|
19天前
|
机器学习/深度学习 Python
删除指定文件夹重复的文件
这是一个Python脚本,用于删除指定文件夹(包括子目录)中的重复图片文件,基于文件的MD5值。程序依赖`NStudyPy`库,可通过`pip install -U NStudyPy`安装。核心函数`delete_repeat_file`接收路径和是否递归参数,调用未展示的`get_repeat_file`函数获取重复文件并删除。
17 1
|
1月前
|
存储 弹性计算 运维
从文件中删除重复的行
【4月更文挑战第29天】
25 1
|
1月前
|
Java 大数据 数据处理
获取到数据循环写文件
这段代码是一个Java方法,用于分批处理数据。它定义了初始值和每批处理的数量,然后通过`PageInfo`对象获取数据。如果总数小于1,则直接返回空列表。否则,循环处理数据,防止环境中的多次空跳过,并在处理完一批数据后更新页码。代码中还提到,这个过程可以用于减少大数据操作带来的风险。此外,配有一张动图,可能表示数据处理的过程。
26 1
|
8月前
|
存储 JavaScript 前端开发
过滤掉数组中重复的元素
过滤掉数组中重复的元素
27 0
|
10月前
|
消息中间件 数据采集 Kafka
每次join之后没有正确处理数据的重复或缺失情况
每次join之后没有正确处理数据的重复或缺失情况
93 1
|
设计模式 消息中间件 JavaScript
干掉 “重复代码”,这三种方式绝了!
干掉 “重复代码”,这三种方式绝了!
36924 2
干掉 “重复代码”,这三种方式绝了!
|
算法
【递归可以干什么】1#重复执行某种模式
【递归可以干什么】1#重复执行某种模式
63 0
|
数据采集 JSON 数据格式
一日一技:如何处理配置文件中的重复值?
一日一技:如何处理配置文件中的重复值?
103 0
|
算法
保存不带循环的表
保存不带循环的表
72 0