在大量文件中,有时会存在名称不同,但是内容却相同的文件,此时单单凭文件名是没办法区分开的,所以可以尝试,对文件内容进行md5加密,每个文件,只要其内容完全相同,生成的md5值是一样的,但是要保证文件的编码格式一致。得到md5值之后,以唯一的md5值进行文件命名,重新保存,此时则可以保证内容相同的文件有完全相同的文件名。下面是python实现的一种方式:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import hashlib
import os
import timepath = "../data/excel/0712_test.xlsx"
save_dir = '../data/md5_dir/'def save_file_md5(file_obj, save_dir):file_obj_tmp = file_obj.read()name_sufix = 'xlsx'hash_md5 = hashlib.md5()hash_md5.update(unicode(file_obj_tmp, errors='ignore'))md5_code = hash_md5.hexdigest()md5_name = md5_code + '.' + name_sufixtime_stamp = time.localtime(int(time.time()))time_today = time.strftime("%Y-%m-%d", time_stamp)final_dir_path = save_dir + time_todayif not os.path.exists(final_dir_path):os.makedirs(final_dir_path)save_name = os.path.join(final_dir_path, md5_name)with open(save_name, 'wb') as f:f.write(file_obj_tmp)print md5_codereturn md5_codeif __name__ == '__main__':save_file_md5(open(path, 'rb'), save_dir)

上面代码实现的功能就是以唯一的md5值+原始文件后缀名对文件重新命名,并按照日期将新文件保存到文件夹中。

使用md5对文件去重相关推荐

  1. 使用md5来实现文件去重

    可以使用MD5算法来实现文件去重,因为它可以接受任意大小的数据并输出固定长度的哈希值.所以两个不一样的文件一般情况下使用MD5计算出来的hash值是不可能会相等的. 所以一旦两个文件计算出来的hash ...

  2. python对文件夹内文件去重

    昨天无聊写了一个百度图片爬虫,测试了一下搜索"斗图".一下给我下了3000多个图片,关键是有一半以上重复的.what a fuck program ! 好吧,今天写一个文件去重功能 ...

  3. python去重txt文本_Python 文件去重(转载)

    原博文 2020-02-14 13:20 − Python实现的txt文件去重功能示例 更新时间:2018年07月07日 09:00:36 作者:人饭子 我要评论 这篇文章主要介绍了Python实现的 ...

  4. 用MD5防止文件被写入恶意代码

    前几天在某软件园下载burpsuit pro,使用后捆绑软件什么的都不说了,最后经过一番排查发现软件被人家写了恶意代码,导致本人电脑被挂马而且一般的杀毒软件没有检测到(XX管家,XX安全卫士什么的), ...

  5. php读取文件和读取redis,PHP结合redis实现大文件去重

    本篇文章主要内容是用PHP多个进程配合redis的有序集合实现大文件去重,感兴趣的朋友可以学习一下. 1.对一个大文件比如我的文件为 -rw-r--r-- 1 ubuntu ubuntu 9.1G M ...

  6. php redis 集合返回多条,详解PHP多个进程配合redis的有序集合实现大文件去重

    1.对一个大文件比如我的文件为 -rw-r--r-- 1 ubuntu ubuntu 9.1G Mar 1 17:53 2018-12-awk-uniq.txt 2.使用split命令切割成10个小文 ...

  7. 使用开源的openssl的md5头文件,实现对于文件的md5代码

    需要安装openssl的库 sudo apt-get install openssl sudo apt-get install libssl-dev 参考链接 代码 #include "op ...

  8. MD5在文件中的使用

    目录 简介 Demo1(基于字符串) Demo2(基于文件) 简介 在公司的本次开发中牵涉到了一个导出导出,利用MD5保证文件没有被修改过,, 导出的文件格式如下  metis.data(文件名){ ...

  9. MD5验证文件是否重复

    根据文件生成MD5标识串,当两个标识串一致时认为文件内容相同. 文件生成MD5 String方法如下: import java.io.File; import java.io.FileInputStr ...

  10. python文件去重软件_Python实现的txt文件去重功能示例

    本文实例讲述了Python实现的txt文件去重功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python2 import shutil a=0 readD ...

最新文章

  1. 【URAL】1091 Tmutarakan Exams
  2. ClewareControl 2.4 发布,传感器控制程序,增加对 python 的支持
  3. python互斥锁_Python多线程如何使用互斥锁
  4. SQL Server-聚焦UNIOL ALL/UNION查询(二十三)
  5. 【性能优化】 之AWR 报告分析
  6. flink1.12在ubuntu下面的编译记录(转载+自己整理)
  7. 手把手教Electron+vue的使用
  8. python关于包的题怎么做_Python自定义包引入
  9. win7注册表无法修改计算机名称,Win7旗舰版
  10. http://www.blogjava.net/heyang/archive/2010/12/02/
  11. [debug] Expected to have finished reduction in the prior iteration before starting a new one.
  12. MapReduce 学习指南
  13. 2、使用Keras构建回归模型
  14. 基于Ubuntu的ESP32平台搭建
  15. 个人网站搭建保姆级教学:Hexo + Kaze + Gitee Pages
  16. AntiVir德国小红伞杀毒使用
  17. App移动应用测试点总结
  18. 色彩平衡校正色彩的原理
  19. ALBB 二叉树中相差最大节点的绝对差值
  20. javaweb报修系统源码

热门文章

  1. 智能会议系统集成解决方案
  2. 常见反爬虫策略与绕过方法
  3. win10系统字体 chrome 修改苹果字体
  4. 项目管理十大知识领域之间的关系
  5. WPS Office 国际版 添加中文语言包 及相关问题
  6. Flutter开发之——动画-Lottie
  7. linux测试sata硬盘读写速度
  8. (附源码)ssm汽车租赁——持续输出BU 毕业设计 271621
  9. 统计通话次数和时间的软件_通话时间统计app下载
  10. html5移动端webscoket实现在线聊天