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中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 Python
改进Django中的表单的简单方法
Jul 17 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
python从子线程中获得返回值的方法
Jan 30 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
Python利用folium实现地图可视化
May 23 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
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
java解析json方法总结
2019/05/16 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
python中遍历文件的3个方法
2014/09/02 Python
Python实现的最近最少使用算法
2015/07/10 Python
python批量爬取下载抖音视频
2019/06/17 Python
Python有参函数使用代码实例
2020/01/06 Python
python获取栅格点和面值的实现
2020/03/10 Python
python实现批量修改文件名
2020/03/23 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
如何表示python中的相对路径
2020/07/08 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
HTML5新标签兼容——> 的两种方法
2018/09/12 HTML / CSS
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
会计电算化应届生求职信
2013/11/03 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
开幕式邀请函
2015/01/31 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android