Python实现检测文件的MD5值来查找重复文件案例
作者:mighty13 时间:2021-08-14 01:28:02
平时学生交上机作业的时候经常有人相互复制,直接改文件名了事,为了能够简单的检测这种作弊行为,想到了检测文件的MD5值,虽然对于抄袭来说作用不大,但是聊胜于无,以后可以做一个复杂点的。
# coding: utf8
import hashlib
import os
from collections import Counter
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def get_md5_01(file_path):
md5 = None
if os.path.isfile(file_path):
f = open(file_path,'rb')
md5_obj = hashlib.md5()
md5_obj.update(f.read())
hash_code = md5_obj.hexdigest()
f.close()
md5 = str(hash_code).lower()
return md5
def get_md5_02(file_path):
f = open(file_path,'rb')
md5_obj = hashlib.md5()
while True:
d = f.read(8096)
if not d:
break
md5_obj.update(d)
hash_code = md5_obj.hexdigest()
f.close()
md5 = str(hash_code).lower()
return md5
if __name__ == "__main__":
output_list=[]
#input_path=r"e:\xx\新建文件夹"
#output_path = unicode(input_path , "utf8")
output_path=os.getcwd()
g = os.walk(output_path)
for path,dir_list,file_list in g:
for file_name in file_list:
output_list.append(os.path.join(path, file_name) )
md5_list= [get_md5_01(i) for i in output_list]
Counter_list=Counter(md5_list)
for i in Counter_list.items():
if i[1] >1:
duplicate_list=[ a for a in range(len(md5_list)) if md5_list[a] == i[0]]
print '-'*50
print i[0]
for j in duplicate_list:
with open('duplicate.log', mode='a+') as f:
f.write(i[0]+'\t'+output_list[j]+'\n')
print output_list[j]
补充知识:python一句话校验文件哈希值
MD5
python -c "import hashlib,sys;print hashlib.md5(open(sys.argv[1],'rb').read()).hexdigest()" 文件名
SHA-1
python -c "import hashlib,sys;print hashlib.sha1(open(sys.argv[1],'rb').read()).hexdigest()" 文件名
SHA-256
python -c "import hashlib,sys;print hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest()" 文件名
SHA-512
python -c "import hashlib,sys;print hashlib.sha512(open(sys.argv[1],'rb').read()).hexdigest()" 文件名
来源:https://blog.csdn.net/mighty13/article/details/77995850
标签:Python,MD5,重复,文件
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Django使用HTTP协议向服务器传参方式小结
2023-03-08 11:31:20
![](https://img.aspxhome.com/file/2023/6/71336_0s.png)
Python DPED机器学习之实现照片美化
2023-11-25 01:50:24
![](https://img.aspxhome.com/file/2023/5/86315_0s.jpg)
python实现自动重启本程序的方法
2022-07-18 14:16:19
![](https://img.aspxhome.com/file/2023/5/68455_0s.jpg)
Python读取HTML中的canvas并且以图片形式存入Word文档
2022-09-03 04:50:33
![](https://img.aspxhome.com/file/2023/0/89430_0s.png)
Python练习-承压计算
2022-04-19 15:52:21
python实现opencv+scoket网络实时图传
2023-07-03 16:09:17
Python Http请求json解析库用法解析
2021-11-20 14:05:45
Dreamweaver打造多彩文字链接
2007-11-11 18:59:00
![](https://img.aspxhome.com/file/uploadpic/20072/200723113810748.gif)
Perl命令行应用程序详解
2023-08-09 19:01:18
JavaScript事件冒泡
2009-12-28 13:21:00
php微信开发之批量生成带参数的二维码
2023-11-23 19:27:11
![](https://img.aspxhome.com/file/2023/8/113608_0s.jpg)
在Python的列表中利用remove()方法删除元素的教程
2023-03-21 12:42:39
一个带采集远程文章内容,保存图片,生成文件等完整的采集功能
2011-04-02 11:02:00
Python中easy_install 和 pip 的安装及使用
2023-08-24 13:34:54
python3 使用traceback定位异常实例
2023-05-03 12:42:35
![](https://img.aspxhome.com/file/2023/1/101231_0s.jpg)
数据库安全管理的三个经验分享
2009-04-01 15:49:00
python中virtualenvwrapper安装与使用
2022-07-28 03:21:52
CSS执行顺序与优先权的问题
2010-08-23 16:21:00
关于Math.PI、前自增和后自增
2009-05-25 12:38:00
Python抢购脚本的编写方法
2021-10-03 09:47:21
![](https://img.aspxhome.com/file/2023/5/81665_0s.jpg)