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显示天气预报
Mar 02 Python
python使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 Python
Python实现模拟登录及表单提交的方法
Jul 25 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
Python发展史及网络爬虫
Jun 19 Python
Python基于当前时间批量创建文件
May 07 Python
Python list和str互转的实现示例
Nov 16 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
Python爬虫基础讲解之请求
May 13 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开发中常用的8个小技巧
2008/08/27 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
php获取随机数组列表的方法
2014/11/13 PHP
php header函数的常用http头设置
2015/06/25 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
Three.js基础学习之场景对象
2017/09/27 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
批处理与python代码混合编程的方法
2016/05/19 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
python版学生管理系统
2018/01/10 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
机电一体化大学生求职信
2013/11/08 职场文书
毕业研究生的自我鉴定
2013/11/30 职场文书
环保建议书作文
2014/03/12 职场文书
管理提升方案
2014/06/04 职场文书
初中历史教学反思
2016/02/19 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书