在目录中查找重复文件的模块

find-duplicate-files的Python项目详细描述


查找重复文件

查找文件系统上给定目录中的所有重复文件。

此模块将遍历给定的目录树,然后按大小对文件进行分组 (表示可能重复的内容)然后比较文件的哈希。 这个散列可以通过传入一个chunk arg来分块。这将计算文件块的初始哈希 如果第一个哈希匹配,则在计算完整哈希之前,从而避免计算 对大文件进行昂贵的散列运算。

先决条件

  • Python3.6.5

安装

> pip install find-duplicate-files
> find_duplicate_files --dir /path/to/dir --chunk 2

作为python模块运行:

import find_duplicate_files
# required arg: dir, optional: chunk
find_duplicate_files.find_duplicate_files("/path/to/dir", chunk=1)

运行测试

要运行测试,请使用以下命令:

> cd <FindDuplicateFiles directory>
> python -m tests.run

测试数据

提供的测试数据采用以下形式-

  • tests/test_data/testfindduplicatefilesbyhash:5.txt大小相等的文件(29字节)。1.txt和3.txt是相同的内容。4.txt和5.txt是相同的内容。2.txt是不同的内容(但大小相同)。用于验证find_duplicate_files.find_duplicate_files_by_hash函数。
  • tests/test_data/test generate hash/1.txt:1.txt文件,用于比较find_duplicate_files.generate_hash的结果。

性能

一个可选的性能脚本,用于在查找重复文件时比较对完整文件进行哈希处理与分块方法的性能。输出性能指标。 运行:

> cd <FindDuplicateFiles/metrics directory>
> python performance.py

示例输出:

Method 1 - Generate full hash returns correct duplicates.Time 0.006515709001178038
Method 2 - Generate chunked hash returns correct duplicates.Time 0.006872908999866922

基准

Attempt#1#2#3#4
Chunk Size1188
Seconds5.44.163.253.27

测试数据:10.9GB,3653个文件,128个副本,最大文件~156MB

进一步优化

  • 研究给定公共文件类型的最佳块大小
  • 研究线程性能
  • 研究不同的哈希算法
  • 研究递归分块-即消除不同的文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
正在从节点解密字符串。Java中的js?   java未来超时和IO超时   java apache camel多播以异步方式执行聚合   java需要710次尝试在Android和Raspberry Pi之间建立socket连接   在Java中使用“+,”循环绘制形状   java安卓:如何计算两点之间的距离   java多线程Hello World   刷新后缓存共享变量的java Freemarker模板   java我试图通过迭代用整数填充数组,但我得到了ArrayIndexOutOfBoundsException   JNI C++到java 32位图像的不正确显示   java哪个更快:克隆还是使用流?   java cache2k和Generic T不能很好地结合在一起   java如何在读取文件之前更新文件内容?   java如何在GWT中从JSNI方法调用JSNI方法   将MySQL类型文本映射到Java Hibernate的类型   java如何按长度对字符串排序   java RecyclerView:在滚动期间不断更改数据