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之有容乃大的list(3)
Sep 15 Python
python分析nignx访问日志脚本分享
Feb 26 Python
详解Python中expandtabs()方法的使用
May 18 Python
基于python 字符编码的理解
Sep 02 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python3中关于cookie的创建与保存
Oct 21 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
python使用matplotlib绘制雷达图
Oct 18 Python
给 TensorFlow 变量进行赋值的方式
Feb 10 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
通过实例解析Python return运行原理
Mar 04 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
PHP默认安装产生系统漏洞
2006/10/09 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
鼠标经过的文本框textbox变色
2009/05/21 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
canvas时钟效果
2017/02/16 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
Python之PyUnit单元测试实例
2014/10/11 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
Python修改列表值问题解决方案
2020/03/06 Python
python mysql中in参数化说明
2020/06/05 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
英文简历中的自我评价用语
2013/12/09 职场文书
土建资料员岗位职责
2014/01/04 职场文书
要账委托书范本
2014/09/15 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
学校运动会开幕词
2016/03/03 职场文书