资讯专栏INFORMATION COLUMN

使用Python查找目录中的重复文件

melody_lql / 634人阅读

摘要:处理重复文件最后一步非常简单,把上一步建立的字典做一个简单的过滤就能找到重复文件。

是这样的,电脑上的堆积的照片有点多,而且重复的照片被放在了不同的目录,占用的空间越来越大,数量也多得已经不太适合人工分辨整理,写个Python脚本来处理吧。

文件的唯一标识 - MD5

假如你要处理的重复文件有不同的文件名,最简单的办法就是通过MD5来确定两个文件是不是一样的。

def md5sum(filename, blocksize=65536):
    hash = hashlib.md5()
    with open(filename, "rb") as f:
        for block in iter(lambda: f.read(blocksize), b""):
            hash.update(block)
    return hash.hexdigest()

这个方法可以快速获得一个文件的MD5值,blocksize 可以根据文件大小和CPU性能调整,一般选择的值约等于文件的平均大小。

保存所有文件标识和路径

接下来遍历所有文件,使用MD5作为key,路径作为value,保存起来。

dup = {}

def build_hash_dict(dir_path, pattern="*.jpg"):
    
    def save(file):
        hash = md5sum(file)
        if hash not in dup.keys():
            dup[hash] = [file]
        else:
            dup[hash].append(file)

    p = Path(dir_path)
    for item in p.glob("**/" + pattern):
        save(str(item))
处理重复文件

最后一步非常简单,把上一步建立的字典做一个简单的过滤就能找到重复文件。

def get_duplicate():
    return {k: v for k, v in dup.items() if len(v) > 1}

for hash, files in get_duplicate().items():
    print("{}: {}".format(hash, files))

接下来你可以根据自己的需要删除或者保留某个路径下的文件,本文到此为止。

完整的脚本代码: https://gist.github.com/tobyq...
关于作者:

Toby Qin, Python 技术爱好者,目前从事测试开发相关工作,转载请注明原文出处。

欢迎关注我的博客 https://betacat.online,你可以到我的公众号中去当吃瓜群众。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44663.html

相关文章

  • Python 查找重复文件升级版 - photodup

    摘要:之前写了一个简化版的使用查找目录中的重复文件,现在升级了一下,我们来提供一个友好的网页界面。扫描结束后,启动服务即可。顺利的话用浏览器打开就可以看到一个友好的网页,可以通过文件或者文件名来清理重复文件,可以预览图片文件。 之前写了一个简化版的使用Python查找目录中的重复文件,现在升级了一下,我们来提供一个友好的网页界面。 思路 上一个版本我们非常简单粗暴地将所有文件的hash扫描后...

    bingo 评论0 收藏0
  • 最终篇:简洁易懂,初学者挑战学习Python编程30天 (五)

    摘要:和是最受欢迎的。虚拟环境将允许将项目依赖项与本地机器依赖项隔离开来。文件将是项目中的主文件。运行后,检查本地主机。在中创建一个名为的文件夹,并创建一个名为的文件夹。部署创建帐户为前端和全栈应用程序提供免费部署服务。 ...

    1fe1se 评论0 收藏0
  • Atom飞行手册翻译: 2.13 基本的自定义

    摘要:基本的自定义在我们感受到中所有东西的便利之后,让我们看看如何改进它。不像的选择器,的键在每个对象中只能重复一次。语言特定的设置会覆盖全局域的任何设置。作于域的名称显示在设置视图中的每个语言的包中。 基本的自定义 在我们感受到Atom中所有东西的便利之后,让我们看看如何改进它。可能有一些快捷键你经常使用但是感觉很别扭,或者一些颜色不是十分适合你。Atom具有惊人的灵活性,所以让我们对它...

    opengps 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<