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绘制人人网好友关系图示例
Apr 01 Python
Python变量作用范围实例分析
Jul 07 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
python读取文件名称生成list的方法
Apr 27 Python
儿童学习python的一些小技巧
May 27 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
Django框架实现的简单分页功能示例
Dec 04 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 Python
浅谈Python中的正则表达式
Jun 28 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
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
PHP 8新特性简介
2020/08/18 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
Node.js的特点详解
2017/02/03 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
发布Angular应用至生产环境的方法
2018/12/10 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python中实现k-means聚类算法详解
2017/11/11 Python
Python 查看文件的编码格式方法
2017/12/21 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
电子技术专业中专生的自我评价
2013/12/17 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
护士毕业实习感言
2014/03/05 职场文书
买卖协议书范本
2014/04/21 职场文书
工程材料采购方案
2014/05/18 职场文书
旷课检讨书500字
2014/10/14 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
python异常中else的实例用法
2021/06/15 Python