Python脚本清理恢复文件:去重与修复损坏图片

宋时安
宋时安
发布时间:2026-10-13 | 6人浏览过
原创

本文介绍利用Python脚本解决文件恢复后常见的重复文件与损坏图片问题。通过计算MD5值实现精确去重,并尝试打开图片文件以识别并删除无法读取的损坏文件,帮助快速整理恢复后的数据目录。

Python清理恢复文件:去重与修复损坏图片

此前因误格式化硬盘导致照片丢失,借助Recuva工具成功恢复部分文件。然而,恢复后的数据集中存在大量重复文件以及无法正常打开的图片文件。为此,编写了两个Python小程序以解决上述问题。

针对重复文件的处理逻辑如下:

基于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):
  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 相关产品和应用

全部下载

专题列表