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 socket C/S结构的聊天室应用实现
Nov 30 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
Python 修改列表中的元素方法
Jun 26 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python高并发解决方案实现过程详解
Jul 31 Python
python动态规划算法实例详解
Nov 22 Python
python中二分查找法的实现方法
Dec 06 Python
Django框架中模型的用法
Jun 10 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
在PHP中使用灵巧的体系结构
2006/10/09 PHP
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python实现注册登录系统
2017/08/08 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
Python实现序列化及csv文件读取
2020/01/19 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
国际经济贸易专业推荐信
2013/11/06 职场文书
园林系毕业生求职信
2014/06/23 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
三八节活动简报
2015/07/20 职场文书
Python获取字典中某个key的value
2022/04/13 Python
mysql 排序失效
2022/05/20 MySQL