python删除本地夹里重复文件的方法


Posted in Python onNovember 19, 2020

上次的博文主要说了从网上下载图片,于是我把整个笑话网站的图片都拔下来了,但是在拔取的图片中有很多重复的,比如说页面的其他图片、重复发布的图片等等。所以我又找了python的一些方法,写了一个脚本可以删除指定文件夹里重复的图片。

一、方法和思路

1.比对文件是否相同的方法:hashlib库里提供了获取文件md5值的方法,所以我们可以通过md5值来判定是否图片相同

2.对文件的操作:os库里有对文件的操作方法,比如:os.remove()可以删除指定的文件, os.listdir()可以通过指定文件夹路径获取文件夹里所有文件的文件名

思路:通过获取指定文件夹的所有文件名,然后匹配为一个绝对路径的列表,循环的比对每个文件的md5值,如果md5值重复,则删除这个文件

二、代码实现

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))

然后我们可以通过日志来查看到底哪些文件是重复的,不过对于一些超大文件的话,md5值的获取会有一些变化,不过处理一般的小文件都可以的,只需要替换我的路径,就可以在你电脑上运行啦。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python del()函数用法
Mar 24 Python
在Python中进行自动化单元测试的教程
Apr 15 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Python简单读取json文件功能示例
Nov 30 Python
EM算法的python实现的方法步骤
Jan 02 Python
详解python中的线程
Feb 10 Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
python实现mean-shift聚类算法
Jun 10 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 Python
Python处理命令行参数模块optpars用法实例分析
May 31 #Python
python筛选出两个文件中重复行的方法
May 31 #Python
python删除文本中行数标签的方法
May 31 #Python
Python使用wget实现下载网络文件功能示例
May 31 #Python
Python使用progressbar模块实现的显示进度条功能
May 31 #Python
python调用Matplotlib绘制分布点并且添加标签
May 31 #Python
python批量修改文件编码格式的方法
May 31 #Python
You might like
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
requireJS使用指南
2016/04/27 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Python入门篇之函数
2014/10/20 Python
Python中的引用和拷贝浅析
2014/11/22 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
护理学专业求职信
2014/06/29 职场文书
2016年公司新年寄语
2015/08/17 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android