python文件去重优化_Python之文件自动去重

这篇帖子我最先发表在CSDN上,链接 https://blog.csdn.net/zlllg/article/details/82155541

小撸了把Python,这个果然是世界上最好用的语言

b55e51c315b11c6ecd515a9a85195db5.gif

平日里一来无聊,二来手巧,果然下载了好多无(luan)比(qi)珍(ba)贵(zao)的资料,搞得我小小的硬盘(已经扩到6T了)捉襟见肘,

有次无意间,发现有两个居然长得一毛一样,在房子这么小的情况下,我怎能忍两个一毛一样的东西不要脸皮的躺在我的硬盘里,果断搞掉一个,整理一下,本来想文件名一样的就保留一份,但问题出现了,居然有名字一样,内容却完全不一样的文件,想我背朝黄土面朝天吹着空调吃着西瓜下载下来的东西,删除是不可能的,这辈子都是不可能删除的。可是我也又不能把这数以亿计的文件挨个打开看看里面一样不一样吧,这个工程我大概够我做了好久好久了,有没有办法搞个软件帮帮我呢,答案是肯定的,要不然我也不用在这里写这个博客了(应该是苦逼的一个一个打开比较吧),说正题,Python提供了一个比较文件内容的东西,那就是。。。。。。。。。。哈希算法

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。

说了这么长,总结出来就一句,这玩意就是文件的指纹,几乎每个文件是唯一的(碰到重复的,恭喜你,可以去买彩票了),那我们就把这个指纹拿出来,一个一个比对,肯定不能会有漏网的文件,既不会错杀三千,也不使一文件漏网,原理上通了,那么我们就要去搞个代码来帮我完成这个工作,作为最好用的语言,Python就这样被我翻了牌子

1d09111e8c8c0b4968964a32829b483f2a3.jpg

代码如下

# -*- coding:utf-8 -*-

import os

import hashlib

import time

import sys

#搞到文件的MD5

def get_ms5(filename):

m = hashlib.md5()

mfile = open(filename , "rb")

m.update(mfile.read())

mfile.close()

md5_value = m.hexdigest()

return md5_value

#搞到文件的列表

def get_urllist():

base = ("D:\\lwj\\spider\\pic\\")#这里就是你要清缴的文件们了

list = os.listdir(base)

urllist = []

for i in list:

url = base + i

urllist.append(url)

return urllist

#主函数

if __name__ == '__main__':

md5list = []

urllist = get_urllist()

print("test1")

for a in urllist:

md5 = get_ms5(a)

if(md5 in md5list):

os.remove(a)

print("重复:%s" % a)

else:

md5list.append(md5)

print("一共%s张照片" % len(md5list))

效果

c432a2829e77f49d16debeb7173fadd5.png

14db0c8ff3116d519ea9e2388dfdeb98.png

这战斗力杠杠的,啥叫科技改变生活,此之谓也

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用以下步骤来合并和去重根目录下的所有txt文件: 1. 遍历根目录下的所有文件,筛选出txt文件。 2. 打开每个txt文件,读取其中的内容。 3. 将每个文件中的内容添加到一个列表中。 4. 使用集合(set)数据结构对列表进行去重操作。 5. 将去重后的内容写入一个新的txt文件中。 以下是一个示例代码,用于实现这个功能: ```python import os root_dir = "根目录路径" output_file = "合并去重后的文件.txt" file_content_set = set() # 遍历根目录下的所有文件 for root, dirs, files in os.walk(root_dir): for file in files: # 筛选出txt文件 if file.endswith(".txt"): file_path = os.path.join(root, file) # 打开文件并读取内容 with open(file_path, "r", encoding="utf-8") as f: content = f.read() # 将内容添加到集合中 file_content_set.update(content.splitlines()) # 将去重后的内容写入新的txt文件 with open(output_file, "w", encoding="utf-8") as f: f.write("\n".join(file_content_set)) ``` 以上代码会遍历根目录下的所有txt文件,并将它们的内容合并并去重,最终将去重后的内容写入一个新的txt文件中。请根据实际情况修改代码中的根目录路径和输出文件名。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [python3.7.2下多个txt文件合并去重](https://download.csdn.net/download/qq_41650481/11007723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [使用python文件夹里的所有表格合并且去重](https://blog.csdn.net/weixin_47970003/article/details/121792711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值