Python实现检测文件的MD5值来查找重复文件案例


Posted in Python onMarch 12, 2020

平时学生交上机作业的时候经常有人相互复制,直接改文件名了事,为了能够简单的检测这种作弊行为,想到了检测文件的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()" 文件名

以上这篇Python实现检测文件的MD5值来查找重复文件案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python查询Mysql时返回字典结构的代码
Jun 18 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
python使用turtle库绘制树
Jun 25 Python
Python json模块dumps、loads操作示例
Sep 06 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
通过自学python能找到工作吗
Jun 21 Python
Matplotlib配色之Colormap详解
Jan 05 Python
用Python实现Newton插值法
Apr 17 Python
Python利用capstone实现反汇编
Apr 06 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 #Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 #Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 #Python
Python 实现使用空值进行赋值 None
Mar 12 #Python
PyCharm永久激活方式(推荐)
Sep 22 #Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 #Python
pycharm激活码快速激活及使用步骤
Mar 12 #Python
You might like
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
详解React 条件渲染
2020/07/08 Javascript
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
django的settings中设置中文支持的实现
2019/04/28 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
python 爬取小说并下载的示例
2020/12/07 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
致接力运动员广播稿
2014/02/17 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
毕业生学校组织意见
2015/06/04 职场文书