Python实现MD5文件去重功能的脚本怎样写
Admin 2022-06-17 群英技术资讯 951 次浏览
这篇文章给大家分享的是Python实现MD5文件去重功能的脚本怎样写。小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。工作中偶尔会遇到文件去重的事情,收到一大堆文件,名称各不相同,分析文件的时候发现有不少重复的文件,导致工作效率低下,那么,这里就写了一个python脚本实现文件去重功能
脚本会检查你给出的文件路径下的所有文件,然后计算每个文件的MD5值,并将其加入到一个列表中。
import os
import shutil
import hashlib
# 对文件去重
# 计算每个文件的md5值,据此进行去重
def only_one(test_path):
md5_list = []
count = 0
for current_folder, list_folders, files in os.walk(test_path):
for file in files:
file_path = current_folder + '\\' + file # 获取每个文件的路径
f = open(file_path, 'rb') # 开始计算每个文件的md5值
md5obj = hashlib.md5()
md5obj.update(f.read())
get_hash = md5obj.hexdigest()
f.close()
md5_value = str(get_hash).upper()
# 开始去重
if md5_value in md5_list: # 如果这个文件的md5值曾经出现过,就不对它做任何处理
count += 1
print('\033[31m[-] 发现重复文件:\033[0m' + str(file))
else:
md5_list.append(md5_value) # 如果这个文件的md5值不存在列表中,就添加进列表中
shutil.copy(file_path, path1)
print('\033[31m[-] 共发现重复文件:{}个\033[0m'.format(count))
if __name__ == '__main__':
print('\033[4;33m[+] 此脚本会检查指定路径下的所有文件,通过计算文件的MD5值进行去重\033[0m')
print('\033[4;33m[+] 去重后的文件会复制到桌面新文件夹中,源文件不会丢失\033[0m')
path = input('\033[34m[+] 请输入文件夹地址:\033[0m')
os.chdir(path)
# path1 用来存放所有的去重结果
desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop') # 获取桌面路径
path1 = os.path.join(desktop_path, '去重结果')
os.makedirs(path1)
only_one(path)
print('\033[32m[-] 现有非重复文件共计:{}个\033[0m'.format(len(os.listdir(path1))))

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
列表是由一系列按照特定顺序的元素组成!列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型!!
想必大家都玩过贪吃蛇的游戏吧:通过操纵蛇的移动方向能够让蛇吃到随机出现的食物,吃到的食物越多,蛇就会变得越长。本文将使用手势识别来完成贪吃蛇这个简单的游戏,感兴趣的可以了解一下
机器学习(Machine Learing)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。
本文详细讲解了Python的基本语法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了Python 中的反转字符串reversed(),切片 ,以相反的顺序反转和处理字符串可能是编程中的一项常见任务。Python 提供了一组工具和技术,可以帮助我们快速有效地执行字符串反转,下面来看看具体内容吧
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008