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求斐波那契数列示例分享
Feb 14 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 Python
python实现斐波那契数列的方法示例
Jan 12 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
python中的随机函数小结
Jan 27 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
python和c语言哪个更适合初学者
Jun 22 Python
python获取整个网页源码的方法
Aug 03 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
PyChon中关于Jekins的详细安装(推荐)
Dec 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
python制作抽奖程序代码详解
2021/01/15 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
竞聘演讲稿
2014/04/24 职场文书
责任心演讲稿
2014/05/14 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
绵山导游词
2015/02/05 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL