python删除文件夹下相同文件和无法打开的图片


Posted in Python onJuly 16, 2019

前天不小心把硬盘格式化了,丢了好多照片,后来用Recuva这款软件成功把文件恢复过来,可是恢复的文件中有好多重复的文件和无法打开的图片,所以写了两个python的小程序用来解决这个问题

删除相同文件:

#coding=utf-8
 
import os
import os.path
import Image
import hashlib
 
def get_md5(filename):
 m = hashlib.md5()
 mfile = open(filename, "rb")
 m.update(mfile.read())
 mfile.close()
 md5_value = m.hexdigest()
 return md5_value
 
if __name__ == '__main__':
 ipath = "E:\\20161019_photo"
 uipath = unicode(ipath, "utf8")
 
 for parent, dirnames, filenames in os.walk(uipath):
  md5_list = []
  #for dirname in dirnames: # 输出文件夹信息
   #print "parent is:" + parent
   #print "dirname is: " + dirname
  for filename in filenames:
   #print "parent is :" + parent
   #print "filename is:" + filename
   #print "md5_list is : "
 
   if(get_md5(os.path.join(parent, filename)) in md5_list):
    os.remove(os.path.join(parent, filename))
   else:
    md5_list.append(get_md5(os.path.join(parent, filename)))
   #print md5_list
   #md5 = []

删除无法打开文件:

#coding=utf-8
 
import os
import os.path
import Image
import hashlib
 
def get_md5(filename):
 m = hashlib.md5()
 mfile = open(filename, "rb")
 m.update(mfile.read())
 mfile.close()
 md5_value = m.hexdigest()
 return md5_value
 
if __name__ == '__main__':
 ipath = "E:\\20161019_photo"
 uipath = unicode(ipath, "utf8")
 for parent, dirnames, filenames in os.walk(uipath):
  for filename in filenames:
   name ,ext = os.path.splitext(filename)
   if((ext == ".png") or (ext == ".tif") or (ext == ".gif")):
    os.remove(os.path.join(parent, filename))
   else:
    if(ext == ".jpg"):
     try:
      fp = open(os.path.join(parent, filename), 'rb')
      img = Image.open(fp)
     except:
      fp.close()
      os.remove(os.path.join(parent, filename))
     else:
      continue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
python多进程控制学习小结
Oct 31 Python
python3爬虫怎样构建请求header
Dec 23 Python
对Python发送带header的http请求方法详解
Jan 02 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
详解Python 函数参数的拆解
Sep 02 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
python实现无边框进度条的实例代码
Dec 30 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 #Python
python实现字符串完美拆分split()的方法
Jul 16 #Python
python如何删除文件中重复的字段
Jul 16 #Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 #Python
Python使用正则表达式分割字符串的实现方法
Jul 16 #Python
Python Django切换MySQL数据库实例详解
Jul 16 #Python
Python二维码生成识别实例详解
Jul 16 #Python
You might like
PHP实时显示输出
2008/10/02 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php 浮点数比较方法详解
2017/05/05 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
node.js微信公众平台开发教程
2016/03/04 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
python备份文件的脚本
2008/08/11 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python调用摄像头显示图像的实例
2018/08/03 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
基于Python实现粒子滤波效果
2020/12/01 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
this关键字的作用
2016/01/30 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
计算机专业推荐信范文
2013/11/20 职场文书
初二学习计划书范文
2014/04/27 职场文书
检讨书怎么写
2015/01/23 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
创业计划书之便利店
2019/09/05 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书