获取重复的文件

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 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)
AI 代码解读

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
AI 代码解读

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

目录
打赏
0
2
2
0
12
分享
相关文章
在系统中查找重复文件
在系统中查找重复文件
95 0
如何在处理重复值时保持数据的原始顺序?
可以在处理数据重复值时有效地保持数据的原始顺序,确保数据在清洗和预处理过程中不会因为重复值的处理而导致顺序混乱,从而保证了数据分析结果的准确性和可靠性。
157 64
可重复读解决了哪些问题
在数据库事务处理中,隔离级别是一个核心概念,它决定了事务在并发执行时如何相互隔离。MySQL的隔离级别之一“可重复读(REPEATABLE READ)”解决了多个并发事务中的数据一致性问题。本文将详细探讨可重复读隔离级别解决了哪些问题。
删除指定文件夹重复的文件
这是一个Python脚本,用于删除指定文件夹(包括子目录)中的重复图片文件,基于文件的MD5值。程序依赖`NStudyPy`库,可通过`pip install -U NStudyPy`安装。核心函数`delete_repeat_file`接收路径和是否递归参数,调用未展示的`get_repeat_file`函数获取重复文件并删除。
70 1
从文件中删除重复的行
【4月更文挑战第29天】
60 1
每次join之后没有正确处理数据的重复或缺失情况
每次join之后没有正确处理数据的重复或缺失情况
141 1
【递归可以干什么】1#重复执行某种模式
【递归可以干什么】1#重复执行某种模式
102 0
一日一技:如何处理配置文件中的重复值?
一日一技:如何处理配置文件中的重复值?
147 0