常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。

【阅读全文】

主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件通过MD5函数的对比筛选出来,最后将重复的文件移除。

用到的第三方库都比较的常见,其中只有hashlib是用来对比文件的不是很常见。其他的都是一些比较常见的第三方库用来做辅助操作。

import os  # 应用文件操作
import hashlib  # 文件对比操作
import logging  # 日志函数操作
import sys  # 系统应用操作

日志的设置基本都是这一套的范式,按照规则设置好日志打印的相关信息。

logger = logging.getLogger('系统文件去重')
logging.basicConfig(format='%(asctime)s %(levelname)-8s: %(message)s')
logger.setLevel(logging.DEBUG)

文件去重的实现逻辑代码块如下:

diretory = input('请输入需要整理的文件目录: \n')  # 去重的文件夹路径if os.path.isdir(diretory):logger.info('当前目录[' + diretory + ']校验成功!')md5s = []for file_path, dir_names, file_names in os.walk(r'' + diretory):for file_name in file_names:try:file_name_path = os.path.join(file_path, file_name)logger.info('当前比对路径: '+ file_name_path)md5 = hashlib.md5()file = open(file_name_path, "rb")md5.update(file.read())file.close()md5_value = md5.hexdigest()if md5_value in md5s:os.remove(file_name_path)logger.info('[' + file_name_path + ']出现重复已经移除!')else:md5s.append(md5_value)except:logger.error('[' + file_name_path + ']对比发生异常,执行下一个!')else:logger.error('输入的文件夹或者目录不存在!')

以上就是文件去重的整个实现过程,用来做一个清理电脑文件的小工具还是比较实用的。

【往期精彩】

哈撒给,英雄联盟全皮肤下载器来了... PyQt5的敏感词检测工具制作,运营者的福音... 手绘图片生成器:以雪容融为例一键生成...

刚刚出炉的冬奥会吉祥物:冰墩墩,附源码... 最优美的表格查看插件:tabulate 抖音同款课堂点名系统,PyQt5写起来很简单...

开工啦!批量向PDF文件添加中文水印... 大年初二、做了一个windows通知管理器! 百度图片下载器2.0

gif动态图片生成器,多张图片组合后生成动图... python几个常见的数据处理操作,一行代码就能完成! 过年了,用 PyQt5 生成一副春联吧...

hashlib.md5()函数来筛选出系统重复文件并移除...相关推荐

  1. 记录一下 Java 代码实现文件夹、文件的对比,主要包含 word、pdf、文本、图片等相关文件的对比计算,以及计算文本的相似率(重复率)、筛选出差异的文件、方便文件和文档的去重,并封装为jar包

    记录一下 Java 代码实现文件夹.文件的对比,主要包含 word.pdf.文本.图片等相关文件的对比计算,以及计算文本的相似率(重复率).筛选出差异的文件.方便文件和文档的去重,并把所有的源码封装为 ...

  2. mysql筛选不重复数据库_mysql的distinct用法-mysql中如何筛选出非重复的数据

    使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一 条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所 ...

  3. python删除两个excel表中的相同元素_python筛选出两个文件中重复行的方法

    ''' 查找A文件中,与B文件中内容不重复的内容 ''' #!usr/bin/python import sys import os ''' 字符串查找函数,使用二分查找法在列表中进行查询 ''' d ...

  4. python两个表格相同数据筛选_python筛选出两个文件中重复行的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. Sql语句筛选出不重复的数据

    sql语句要select 某字段值不重复 的数据,使用distinct关键字.例如从 "name" 列中仅选取所有不重复的值,使用以下SQL: SELECT DISTINCT na ...

  6. 异或运算符^,筛选出数组重复元素

    利用异或的:0异或任何树都得任何书,相同的数字异或得到0; 这里的例题是在长度为10的数组中,里面有1-9的顺序数字,但是有一个数字是重复的,请找出来 我们首先创建这样的一个数组 int N=10;i ...

  7. VMware虚拟机装系统时识别不出系统镜像文件(system not found / vmtool)

    1:先排除IOS镜像是否有问题 我一开始是在阿里云镜像下载的,出现找不到镜像,因为新版VMware已经不能使用从其他地方下载的镜像文件,之后在官网下的问题解决了(官网:获取Ubuntu服务器版 | U ...

  8. pandas,根据某几列筛选出重复记录,is_unique与duplicated

    is_unique与duplicated都可以用于判断是否存在重复记录,区别在于: 1)is_unique:是Series的属性,即只能对系列应用该属性 2)duplicated:是DataFrame ...

  9. Windows系统查找多个文件夹里的重复文件

    目录 powershell终端直接输入指令的方法 输出结果简陋 输出结果完整 编写.执行.ps1文件的方法 分类输出结果 根据文件名.长度.拓展名查找 根据MD5值查找 将结果写入文件中 代码解释(不 ...

最新文章

  1. 普通人CV领域论文创新常见思路与方向总结
  2. How to protect video content (Flash Media Server)
  3. Javascript:阻止浏览器默认右键事件,并显示定制内容
  4. C++,Java编程空指针的一个小细节
  5. [递归]一文看懂递归
  6. Python string生成随机数
  7. 有关Visual Studio Code的说明
  8. 生意倒闭的老板基本死于这两个思维
  9. Centos7 设置静态IP后重启网络服务出错
  10. 将阿拉伯数字转换为语文汉字数字
  11. html怎么把字转换为行内元素,什么是行内元素?
  12. 动画库tween.js
  13. java车牌识别字符分割_【车牌识别】-车牌中字符分割代码详解
  14. 浅谈大数据广告下个人隐私保护,开发者视角的广告原理
  15. C++泛型编程基本概念
  16. 关于Intel酷睿(Core)品牌CPU的不同系列和不同代产品间的性能差异知识普及
  17. GO常见高频面试题(GMP、三色标记)
  18. HttpWatch使用教程
  19. linux /home recovering journal,启动Ubuntu时出现 /dev/sda2 clean 和 /dev/sda2 recovering journal 现象的解决办法...
  20. IDEA JVM 性能优化 相关参数设置

热门文章

  1. 科学家揭示罗马万神庙为何屹立不倒
  2. 1字节(Byte)的范围
  3. 红旗Linux桌面4.1文本装配历程图解(二)
  4. Git笔记:合并分支到主干,合并主干到分支,分支合并到分支
  5. 机器学习之回归(Regression)再理解
  6. android 开发的必备工具
  7. cglib 的BeanCopier高性能解密
  8. 解决idea注释自动在行首的问题
  9. PHPstorm等系列IDE永久破解
  10. 关于position: sticky在小程序中IOS真机下,偶然失效的问题总结