hashlib.md5()函数来筛选出系统重复文件并移除...
常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。
主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件通过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 生成一副春联吧...
欢迎关注作者公众号【Python 集中营】,专注于后端编程,每天更新技术干货,不定时分享各类资料!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构