Python实现删除重复文件的示例代码
作者:一青一柠 时间:2022-02-26 03:50:22
此程序主要是针对某个目录下的全部文件进行筛选,会删除重复的文件。
原理很简单,会计算每个文件的哈希,将哈希存入一个字典,文件名对应哈希。
import os
import hashlib
def hash_file(filename):
"""Return the SHA-1 hash
of the file content."""
h = hashlib.sha1()
with open(filename, 'rb') as f:
while True:
chunk = f.read(4096)
if not chunk:
break
h.update(chunk)
return h.hexdigest()
def remove_duplicate_files(path):
"""Remove duplicates files in the directory."""
files_hash = {}
i=0
j=0
sum=len(os.listdir(path))
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
j=j+1
print("执行进度为:",100*j/sum,"%")
file_path = os.path.join(dirpath, filename)
file_hash = hash_file(file_path)
if file_hash in files_hash:
os.remove(file_path)
i=i+1
# print(i)
else:
files_hash[file_hash] = file_path
print("文件总数为:",sum)
print("此处处理的重复文件数目为:",i)
在使用的时候直接调用下面那个函数即可,传入参数为目录路径。
例如下面这样:
remove_duplicate_files("Y:\图片合集")
当然,你也可以将程序打包为一个exe文件,甚至为它添加简单的页面,让非计算机专业的人也能轻易使用。
补充
当然除了上文的方法,还有很多方法可以实现,下面是小编为大家整理的内容,希望对大家有所帮助
Python删除文件夹内指定的重复文件
import os
import re
class file_clean:
def __init__(self, folder, filerege):
self.folder = folder
self.filerege = filerege
self.folder_generator = os.walk(self.folder)
# 删除所有文件夹及子文件夹下指定文件
def del_all_file(self):
for folder, subfolder, file_list in self.folder_generator:
for file in file_list:
if self.filerege == '*':
del_all_file = os.path.join(folder, file)
os.remove(del_all_file)
elif re.findall(self.filerege, file):
del_all_file = os.path.join(folder, file)
print(del_all_file)
os.remove(del_all_file)
# 只删除所有文件夹下的指定文件
def del_file(self):
for folder, subfolder, file_list in self.folder_generator:
if os.path.dirname(folder) == os.path.dirname(self.folder):
for file in file_list:
if self.filerege == '*':
del_file = os.path.join(folder, file)
os.remove(del_file)
elif re.findall(self.filerege, file):
del_file = os.path.join(folder, file)
print(del_file)
os.remove(del_file)
if __name__ == '__main__':
# 选择文件夹路径 D盘C盘目录需要使用双斜杠r'D:\\', '\.wedrive'
go = file_clean(r'D:\eong', '\.WeDrive')
# 选择要执行的函数类型del_all_file删除件夹及子文件夹下指定文件,del_file只删除当前选择文件夹的指定文件
go.del_file()
python删除本地夹里重复文件的方法
import os
import hashlib
import logging
import sys
def logger():
""" 获取logger"""
logger = logging.getLogger()
if not logger.handlers:
# 指定logger输出格式
formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')
# 文件日志
file_handler = logging.FileHandler("test.log")
file_handler.setFormatter(formatter) # 可以通过setFormatter指定输出格式
# 控制台日志
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter # 也可以直接给formatter赋值
# 为logger添加的日志处理器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 指定日志的最低输出级别,默认为WARN级别
logger.setLevel(logging.INFO)
return logger
def get_md5(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 = ("F:\\pythonFile\\煎蛋网\\无聊图\\jpg\\")
list = os.listdir(base)
urlList=[]
for i in list:
url = base + i
urlList.append(url)
return urlList
if __name__ == '__main__':
log = logger()
md5List =[]
urlList =get_urllist()
for a in urlList:
md5 =get_md5(a)
if (md5 in md5List):
os.remove(a)
print("重复:%s"%a)
log.info("重复:%s"%a)
else:
md5List.append(md5)
# print(md5List)
print("一共%s张照片"%len(md5List))
来源:https://blog.csdn.net/qq_56438857/article/details/128969504
标签:Python,删除,重复,文件
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
详解numpy.ndarray.reshape()函数的参数问题
2022-02-06 20:22:57
理解python中装饰器的作用
2022-01-29 07:58:01
二级联动下拉菜单javascript源码
2010-03-16 12:32:00
OpenCV计算平均值cv::mean实例代码
2023-06-19 10:26:02
![](https://img.aspxhome.com/file/2023/3/59833_0s.png)
python使用jenkins发送企业微信通知的实现
2022-06-06 19:40:16
![](https://img.aspxhome.com/file/2023/7/75917_0s.png)
Django ORM 查询管理器源码解析
2023-01-30 12:28:47
javascript设计模式交流(二) Prototype Pattern
2007-11-29 14:01:00
![](https://img.aspxhome.com/file/UploadPic/200711/29/2007112914633775s.gif)
关于Python排序sort()函数和sorted()函数
2023-10-31 01:32:14
asp加载access数据库并生成XML文件范例
2008-07-22 12:41:00
Python操作MySQL模拟银行转账
2022-05-19 21:23:11
一篇文章快速了解Python的GIL
2021-04-23 00:25:23
![](https://img.aspxhome.com/file/2023/5/72245_0s.jpg)
asp可设置参数的分页代码例子
2007-10-07 12:34:00
设计手机端应用时的一些建议
2011-05-14 16:45:00
使用python实现男神女神颜值打分系统(推荐)
2021-07-17 23:06:57
![](https://img.aspxhome.com/file/2023/3/80733_0s.jpg)
初探TensorFLow从文件读取图片的四种方式
2021-08-06 06:04:34
Python 十大经典排序算法实现详解
2021-10-01 02:55:24
![](https://img.aspxhome.com/file/2023/4/66924_0s.png)
asp获取软件下载的真实地址!再谈获取Response.redirect重定向的URL!
2010-03-10 22:03:00
如何利用python写GUI及生成.exe可执行文件
2023-06-26 00:42:57
![](https://img.aspxhome.com/file/2023/4/59824_0s.png)
Discuz!NT 论坛整合ASP程序论坛
2011-03-31 10:40:00
WEB标准与XHTML 1.0 Transitional等文档类型介绍
2007-10-20 21:18:00