很多时候不管是公司还是个人,有一个头疼的问题,那就是文件放来放去,会有很多地方有重复性的文件,但是光凭肉眼根本无法分辨文件是否是重复的。但是Python可以帮你找出来哪些文件是重复的。
没错,就是通过文件的hash值来判断文件是否重复,今天的示例就是通过文件的MD5码来判断文件是否重复。
题外话,虽然MD5已经被证明为不安全的hash,但是我想你个人也好,公司也好,暂时没有去hack一个文件的hash值来假冒一个文件,当然你也可以今天的示例去计算一个文件sha1,sha256等hash值来判断文件的唯一性,上干货
这个干货需要两个主要的库,os跟hashlib
os用来遍历子目录,hashlib当然是用来计算hash值的
其中md5_file(name) 这个集数通过传入文件名name来让后面的hashlib来读取计算hash值
listyoudir函数用来遍历目录里的文件并调用md5_file来计算
注意:计算文件的hash值的速率跟你的硬盘速度,文件大小有着密切的关系。比如文件1GB大小,计算一个文件的hash需要读取完整的1GB数据才能计算的出来,因此文件越小,速度越快
举个例子,这个文件夹里的2个文件我是通过复制粘贴出来2个一模一样的文件,并更改了其实任何一个文件文件名,其它均未做修改
可以看到文件的hash值完全一样
但是如果我重新新建一个3.txt并且把内容写成444443,我们来看下效果
通过这样来判断文件是否重复的最大好处就是,只要文件内容是一模一样的,不管你怎么命名这个文件,值就肯定一样(通过hack更改除非),我只说正常情况下。
那么如果你想判断整个D盘,跑出结果来就可以很方便的知道哪2个文件是重复的。当然如果你觉得数据量太大,要分析,也可以把数据写入一张表格或者一个数据库里,为今后的分析做准备。
领取专属 10元无门槛券
私享最新 技术干货