摘要:处理重复文件最后一步非常简单,把上一步建立的字典做一个简单的过滤就能找到重复文件。
是这样的,电脑上的堆积的照片有点多,而且重复的照片被放在了不同的目录,占用的空间越来越大,数量也多得已经不太适合人工分辨整理,写个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查找目录中的重复文件,现在升级了一下,我们来提供一个友好的网页界面。 思路 上一个版本我们非常简单粗暴地将所有文件的hash扫描后...
摘要:和是最受欢迎的。虚拟环境将允许将项目依赖项与本地机器依赖项隔离开来。文件将是项目中的主文件。运行后,检查本地主机。在中创建一个名为的文件夹,并创建一个名为的文件夹。部署创建帐户为前端和全栈应用程序提供免费部署服务。 ...
摘要:基本的自定义在我们感受到中所有东西的便利之后,让我们看看如何改进它。不像的选择器,的键在每个对象中只能重复一次。语言特定的设置会覆盖全局域的任何设置。作于域的名称显示在设置视图中的每个语言的包中。 基本的自定义 在我们感受到Atom中所有东西的便利之后,让我们看看如何改进它。可能有一些快捷键你经常使用但是感觉很别扭,或者一些颜色不是十分适合你。Atom具有惊人的灵活性,所以让我们对它...
阅读 3611·2021-10-12 10:11
阅读 993·2021-09-22 15:42
阅读 3442·2019-08-30 13:06
阅读 889·2019-08-29 17:05
阅读 1629·2019-08-29 12:21
阅读 2360·2019-08-29 11:31
阅读 1117·2019-08-23 18:37
阅读 1237·2019-08-23 14:58