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

 更新时间:2020年03月12日 16:20:46   作者:mighty13  
这篇文章主要介绍了Python实现检测文件的MD5值来查找重复文件案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

平时学生交上机作业的时候经常有人相互复制,直接改文件名了事,为了能够简单的检测这种作弊行为,想到了检测文件的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爬虫爬取新闻资讯案例详解

    这篇文章主要介绍了Python爬虫爬取新闻资讯案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python极值整数的边界探讨分析

    Python极值整数的边界探讨分析

    这篇文章主要介绍了Python极值整数的边界探讨分析,阅读本文来一起领略Python中的极值,看一下Python整数是否有边界,有需要的朋友可以借鉴参考下
    2021-09-09
  • 详解Django中的unittest及应用

    详解Django中的unittest及应用

    unittest是python的一个单元测试框架,它是用于对一个确定结果和预测结果的一种判断,这篇文章主要介绍了Django中的unittest及应用,需要的朋友可以参考下
    2021-11-11
  • Python数据分析之Numpy库的使用详解

    Python数据分析之Numpy库的使用详解

    NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
    2021-11-11
  • Python考拉兹猜想输出序列代码实践

    Python考拉兹猜想输出序列代码实践

    这篇文章主要介绍了Python考拉兹猜想输出序列代码实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python编程基础之字典

    Python编程基础之字典

    这篇文章主要为大家介绍了Python的字典,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • python读写ini配置文件方法实例分析

    python读写ini配置文件方法实例分析

    这篇文章主要介绍了python读写ini配置文件方法,实例分析了Python针对ini配置文件的相关读写技巧,需要的朋友可以参考下
    2015-06-06
  • 使用Python下载Bing图片(代码)

    使用Python下载Bing图片(代码)

    代码另存为py文件,运行图片将自动下载到py文件相同目录,如果觉得每次运行找文件麻烦,可以新建py文件的快捷方式,程序还会自动给下载的图片命名
    2013-11-11
  • Python实现两个list对应元素相减操作示例

    Python实现两个list对应元素相减操作示例

    这篇文章主要介绍了Python实现两个list对应元素相减操作,结合具体实例形式分析了list对应元素操作的简单实现技巧,需要的朋友可以参考下
    2017-06-06
  • PyCharm连接远程服务器的超级详细教程

    PyCharm连接远程服务器的超级详细教程

    Pycharm可以与服务器建立连接,把相应的项目同步到服务器上,下面这篇文章主要给大家介绍了关于PyCharm连接远程服务器的超级详细教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论