python检测文件的MD5值
MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。MD5算法的使用不需要支付任何版权费用。

每个文件都会有一个MD5的加密值,这个值来唯一标识这个文件,它常用来辨别文件的真伪,例如下载系统安装镜像,旁边会附带一个长长的字符乱码,这就是这个镜像的MD5值。文件被修改后其MD5值也会改变,所以可以用来判断一个文件是否被修改过。这样的方法比基于时间、文件大小的比较显然更加可靠。

感谢大神之作:

#!/usr/bin/env python
#coding: utf-8
import re
import os
import shutil
import time
import random
import sys
import urllib
import hashlib
#重复邮件的目录
FROM_FOLDER_LIST=["/data/zhangsan/cur",]
#准确的,即去重后的需要的邮件
TARGET_FOLDER="/root/patch1"
#得到的重复邮件
TARGET_FOLDER2="/root/patch3"
def get_md5_value(src):#调用hashlib里的md5()生成一个md5 hash对象myMd5 = hashlib.md5()#生成hash对象后,就可以用update方法对字符串进行md5加密的更新处理myMd5.update(src)#加密后的十六进制结果myMd5_Digest = myMd5.hexdigest()#返回十六进制结果return myMd5_Digest
MD5_POOL={
}
for FROM_FOLDER in FROM_FOLDER_LIST:for root, dirs, files in os.walk(FROM_FOLDER):for file_name in files:filepath = "%s/%s"%(root,file_name)print "扫描文件  ",filepath#以上几行是循环扫描每个文件,并打印出来try:#打开一个文件,并定义为fobj别名with open(filepath,"rb") as fobj:#读文件code = fobj.read()#调用获取md5值的函数,返回文件的十六进制结果,并赋值给md5_v变量md5_v = get_md5_value(code)#假如md5_v没在MD5_POOL池(字典)中,然后打印出来,并移动到TARGET_FOLDER目录if not md5_v in MD5_POOL:print "移动文件 %s 到目录 %s下"%(filepath,TARGET_FOLDER)shutil.move(filepath, "%s/%s"%(TARGET_FOLDER,file_name))#然后加到池中,一个是key,一个是值MD5_POOL[md5_v] = file_nameelse:#假如池中,就重复了,就移动到TARGET_FOLDER2目录print "%s 是重复文件, 移动到目录 %s下"%(filepath,TARGET_FOLDER2)shutil.move(filepath, "%s/%s"%(TARGET_FOLDER2,file_name))except Exception,err:print errprint "copy file %s error"%filepathcontinue

转载于:https://blog.51cto.com/net881004/2055622

对比文件md5值实现去重文件相关推荐

  1. 文件 md5去重 linux,对比文件md5值实现去重文件

    python检测文件的MD5值 MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版 ...

  2. java 文件的md5值_Java计算文件的MD5值

    import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.securi ...

  3. 通过md5值删除重复文件

    不能不说shell命令的强大,一条命令就可以解决繁琐编码. 根据文件MD5删除重复文件,仅保留一份文件: find "$1" -type f -exec md5sum {} \; ...

  4. 使用Java计算文件的MD5值(含修改MD5值的方法)

    什么是 MD5 ? MD5(Message Digest Algorithm,信息摘要算法),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保 ...

  5. linux 目录下比对md5,Linux下批量校验文件md5值(find+diff)

    为了安全需要,第一次部署完linux之后,生成对应目录文件的md5值,比如/sbin目录下的执行文件,如果部署的是网站程序文件,也可以第一时间生成md5值,以后每次改动都可以记录在案.这样的话,在怀疑 ...

  6. Spring Boot——获取上传文件的MD5值解决方案

    解决方案 方法一: /*** 上传文件* @param file 文件* @return ResponseBean*/@ApiOperation(value = "上传文件",no ...

  7. (转)python3 计算字符串、文件md5值

    字符串md5值 import hashlibdef md5_convert(string):"""计算字符串md5值:param string: 输入字符串:return ...

  8. linux 文件md5,Linux下计算文件的MD5值

    脚本功能 脚本使用Perl编写,计算文件的MD5值 脚本用途 服务器在安装完操作系统后,计算PATH变量里面所有的二进制文件的MD5.计算单个文件MD5值.计算某个目录(包括子目录)下所有的文件的MD ...

  9. md5sum 命令 – 计算文件内容的 md5 值

    md5sum 命令的功能是用于计算文件内容的 md5 值,进而比较两个文件相同与否.md5 值是一个128位的二进制数据,转换成16进制则是32位. 用户可以通过此命令对文件内容进行汇总并计算出一个 ...

  10. MAC修改文件的MD5值

    最近遇到一个需求,需要修改文件的md5值否则会被认为是相同文件 本人用的mac系统,操作也很简单 先查看文件的md5值 修改文件的md5值 在查看文件的md5值 操作分别是 1). md5 (文件路径 ...

最新文章

  1. YOLO-目标检测中计算AP、MAP方法
  2. 在區塊鏈上建立可更新的智慧合約(二)
  3. java 命令行eclipse_在命令行中运行eclipse中创建的java项目
  4. Java实现冒泡排序动画展示
  5. 深度点评五种常见WiFi搭建方案
  6. 陕西理工大学计算机科学与技术系,陕西理工大学计算机科学与技术专业2016年在陕西理科高考录取最低分数线...
  7. 【Python】pyCryptodome模块实现AES加密、解密
  8. 给大家一个网站程序,fastmai网站源码
  9. linux服务器上文件编码格式转化shell
  10. linux kill -9 杀不掉的进程
  11. 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅
  12. idea 启动选择profiles_玩转SpringBoot 2 之项目启动篇
  13. 有哪些必看的前端 JS 库?
  14. 矩阵论复习笔记:矩阵直积及其应用
  15. svg转换pdf用php实现,如何使用javascript在JSPDF中将SVG文件转换为PDF
  16. 最新手机号正则表达式验证方法(scala版)
  17. 前端css简易拾色器
  18. shenyu自定义插件
  19. Apache的管理优化
  20. 您觉得目前网页最小字体应该多大呢?

热门文章

  1. 模块_time模块/copy模块/os模块
  2. jpg、jpeg、png... 的区别
  3. A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
  4. 传统反病毒产品丧钟响起
  5. MongoDB应用上的坑
  6. Python 入门演示
  7. git解决 remote: Permission to wuheng1991/site-manager.git denied to XXX
  8. 如何切换python2和python3 版本
  9. MSIL实用指南-struct的生成和操作
  10. Sailfish预研结果