对比文件md5值实现去重文件
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值实现去重文件相关推荐
- 文件 md5去重 linux,对比文件md5值实现去重文件
python检测文件的MD5值 MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版 ...
- java 文件的md5值_Java计算文件的MD5值
import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.securi ...
- 通过md5值删除重复文件
不能不说shell命令的强大,一条命令就可以解决繁琐编码. 根据文件MD5删除重复文件,仅保留一份文件: find "$1" -type f -exec md5sum {} \; ...
- 使用Java计算文件的MD5值(含修改MD5值的方法)
什么是 MD5 ? MD5(Message Digest Algorithm,信息摘要算法),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保 ...
- linux 目录下比对md5,Linux下批量校验文件md5值(find+diff)
为了安全需要,第一次部署完linux之后,生成对应目录文件的md5值,比如/sbin目录下的执行文件,如果部署的是网站程序文件,也可以第一时间生成md5值,以后每次改动都可以记录在案.这样的话,在怀疑 ...
- Spring Boot——获取上传文件的MD5值解决方案
解决方案 方法一: /*** 上传文件* @param file 文件* @return ResponseBean*/@ApiOperation(value = "上传文件",no ...
- (转)python3 计算字符串、文件md5值
字符串md5值 import hashlibdef md5_convert(string):"""计算字符串md5值:param string: 输入字符串:return ...
- linux 文件md5,Linux下计算文件的MD5值
脚本功能 脚本使用Perl编写,计算文件的MD5值 脚本用途 服务器在安装完操作系统后,计算PATH变量里面所有的二进制文件的MD5.计算单个文件MD5值.计算某个目录(包括子目录)下所有的文件的MD ...
- md5sum 命令 – 计算文件内容的 md5 值
md5sum 命令的功能是用于计算文件内容的 md5 值,进而比较两个文件相同与否.md5 值是一个128位的二进制数据,转换成16进制则是32位. 用户可以通过此命令对文件内容进行汇总并计算出一个 ...
- MAC修改文件的MD5值
最近遇到一个需求,需要修改文件的md5值否则会被认为是相同文件 本人用的mac系统,操作也很简单 先查看文件的md5值 修改文件的md5值 在查看文件的md5值 操作分别是 1). md5 (文件路径 ...
最新文章
- YOLO-目标检测中计算AP、MAP方法
- 在區塊鏈上建立可更新的智慧合約(二)
- java 命令行eclipse_在命令行中运行eclipse中创建的java项目
- Java实现冒泡排序动画展示
- 深度点评五种常见WiFi搭建方案
- 陕西理工大学计算机科学与技术系,陕西理工大学计算机科学与技术专业2016年在陕西理科高考录取最低分数线...
- 【Python】pyCryptodome模块实现AES加密、解密
- 给大家一个网站程序,fastmai网站源码
- linux服务器上文件编码格式转化shell
- linux kill -9 杀不掉的进程
- 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅
- idea 启动选择profiles_玩转SpringBoot 2 之项目启动篇
- 有哪些必看的前端 JS 库?
- 矩阵论复习笔记:矩阵直积及其应用
- svg转换pdf用php实现,如何使用javascript在JSPDF中将SVG文件转换为PDF
- 最新手机号正则表达式验证方法(scala版)
- 前端css简易拾色器
- shenyu自定义插件
- Apache的管理优化
- 您觉得目前网页最小字体应该多大呢?