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计算文本文件行数的方法
Jul 06 Python
解决Python requests 报错方法集锦
Mar 19 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
浅谈flask源码之请求过程
Jul 26 Python
Python3 log10()函数简单用法
Feb 19 Python
python顺序执行多个py文件的方法
Jun 29 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
python数值基础知识浅析
Nov 19 Python
通过实例解析Python return运行原理
Mar 04 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
几款Python编译器比较与推荐(小结)
Oct 15 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的FTP学习(二)
2006/10/09 PHP
基于PHP+Ajax实现表单验证的详解
2013/06/25 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
基于jquery的Repeater实现代码
2010/07/17 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
Python中的__SLOTS__属性使用示例
2015/02/18 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
快速了解Python中的装饰器
2018/01/11 Python
python合并同类型excel表格的方法
2018/04/01 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
商场促销活动方案
2014/02/08 职场文书
《恐龙》教学反思
2014/04/27 职场文书
计划生育标语
2014/06/23 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript