获取重复的文件

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 使用 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 , 参加下篇随笔来介绍。

目录
相关文章
|
iOS开发 MacOS
Mac用户无权限修改/usr/bin目录
对于Mac OS X 10.11 El Capitan用户,由于系统启用了SIP(System Integrity Protection), 导致root用户也没有权限修改/usr/bin目录。
2565 0
|
6月前
|
人工智能 API 计算机视觉
AI-ClothingTryOn:服装店老板连夜下架试衣间!基于Gemini开发的AI试衣应用,一键生成10种穿搭效果
AI-ClothingTryOn是基于Google Gemini技术的虚拟试衣应用,支持人物与服装照片智能合成,可生成多达10种试穿效果版本,并提供自定义提示词优化功能。
459 18
AI-ClothingTryOn:服装店老板连夜下架试衣间!基于Gemini开发的AI试衣应用,一键生成10种穿搭效果
|
11月前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
120 1
|
存储 分布式计算 Hadoop
【Azure 存储服务】Hadoop集群中使用ADLS(Azure Data Lake Storage)过程中遇见执行PUT操作报错
【Azure 存储服务】Hadoop集群中使用ADLS(Azure Data Lake Storage)过程中遇见执行PUT操作报错
|
机器学习/深度学习 Python
删除指定文件夹重复的文件
这是一个Python脚本,用于删除指定文件夹(包括子目录)中的重复图片文件,基于文件的MD5值。程序依赖`NStudyPy`库,可通过`pip install -U NStudyPy`安装。核心函数`delete_repeat_file`接收路径和是否递归参数,调用未展示的`get_repeat_file`函数获取重复文件并删除。
182 1
|
存储 算法 关系型数据库
一文带你了解MySQL之InnoDB 数据页结构
学完了记录结构,我们该学数据页的结构,前边我们简单的提了一下页的概念,它是Innodb管理存储空间的基本单位,页的大小默认16KB,InnoDB为了不同的目的而设计了许多种不同类型的页,比如存放表空间头部信息的页,存放Insert Buffer信息的页,存放INODE信息的页,存放undo日志信息的页等等等等。而我们聚焦的是那些存放我们表中记录的那种类型的页,官方称这种存放记录的页为索引(INDEX)页,鉴于我们还没有了解过索引是个什么东系,而这些表中的记录就是我们日常口中所称的数据,所以目前还是叫这种存放记录的页为数据页吧
1442 0
|
算法 关系型数据库 MySQL
MySQL 的索引类型及使用场景
MySQL支持多种类型的索引,每种索引类型都有不同的使用场景。下面是一些常见的索引类型及其适用场景: 1. B-树索引:B-树索引是MySQL的默认索引类型。它适用于经常需要范围查询的列,例如日期范围查询、区间查询等。B-树索引也适用于针对大型表进行排序和分组查询。 2. 唯一索引:唯一索引确保索引列中的值是唯一的。它适用于要求索引列的值不重复的场景。 3. 主键索引:主键索引是唯一索引的一种特殊类型。它用于定义表的主键,并且主键值不能为NULL。主键索引可以帮助快速查找表中的唯一行。 4. 全文索引:全文索引用于全文搜索场景,支持对文本数据进行全文搜索和相关性排序。它适用于需要执行全
721 0
|
Windows 数据安全/隐私保护 关系型数据库
|
数据可视化 数据管理 Linux
2023 年 10 大最佳 GIS 软件
2023 年 10 大最佳 GIS 软件
2501 0
2023 年 10 大最佳 GIS 软件