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的Django框架与认证系统整合的方法
Jul 24 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python实现的个人所得税计算器示例
Jun 01 Python
python 同时运行多个程序的实例
Jan 07 Python
python多线程与多进程及其区别详解
Aug 08 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
Python使用UDP实现720p视频传输的操作
Apr 24 Python
python基础之错误和异常处理
Oct 24 Python
python百行代码实现汉服圈图片爬取
Nov 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
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
Javascript中的常见排序算法
2007/03/27 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
浅谈javascript的调试
2015/01/28 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
python WindowsError的错误代码详解
2017/07/23 Python
详解Python核心对象类型字符串
2018/02/11 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python打包生成so文件的实现
2020/10/30 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
电工技术比武方案
2014/05/11 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
采购员岗位职责范本
2015/04/07 职场文书
公司宣传语大全
2015/07/13 职场文书
整脏治乱工作简报
2015/07/21 职场文书
安全伴我行主题班会
2015/08/13 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技
Golang Web 框架Iris安装部署
2022/08/14 Python