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删除文件示例分享
Jan 28 Python
在Python的web框架中配置app的教程
Apr 30 Python
Python字符串匹配算法KMP实例
Jul 18 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
Python 共享变量加锁、释放详解
Aug 28 Python
python 的topk算法实例
Apr 02 Python
python中os包的用法
Jun 01 Python
Vs Code中8个好用的python 扩展插件
Oct 12 Python
python如何修改文件时间属性
Feb 05 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
详解vue组件开发脚手架
2018/06/15 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
python任务调度实例分析
2015/05/19 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python实现内存监控系统
2021/03/07 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
python匿名函数的使用方法解析
2019/10/10 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
课程设计心得体会
2013/12/28 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
科学发展观活动总结
2014/08/28 职场文书
教师节慰问信
2015/02/15 职场文书
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis