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 通过pip安装Django详细介绍
Apr 28 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
Python数据结构之图的应用示例
May 11 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
Django框架视图函数设计示例
Jul 29 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
如何基于Python实现数字类型转换
Feb 07 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
python数字转对应中文的方法总结
Aug 02 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中SESSION的注销与清除
2015/04/16 PHP
php实现登陆模块功能示例
2016/10/20 PHP
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python 基础教程之Map使用方法
2017/01/17 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
np.random.seed() 的使用详解
2020/01/14 Python
python实现最短路径的实例方法
2020/07/19 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
Collection和Collections的区别
2016/05/02 面试题
室内设计专业学生的自我评价分享
2013/11/27 职场文书
同学聚会欢迎辞
2014/01/14 职场文书
聚美优品励志广告词
2014/03/14 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
个人委托书如何写
2014/09/25 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python
mybatis 获取更新记录的id
2022/05/20 Java/Android