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引用(import)文件夹下的py文件的方法
Aug 26 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
Jun 29 Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 Python
Python3处理HTTP请求的实例
May 10 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
Python多进程写入同一文件的方法
Jan 14 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
python列表推导式入门学习解析
Dec 02 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
python opencv旋转图片的使用方法
Jun 04 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
python求列表交集的方法汇总
2014/11/10 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
Python Flask基础教程示例代码
2018/02/07 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
幼儿教师师德师风演讲稿
2014/08/22 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
Golang 入门 之url 包
2022/05/04 Golang