几行Python代码轻松删除电脑中的重复图片

前言

今天开始新的文集,将python学习中的点滴心得记录下来。这一篇讲一下如何用几行代码删除电脑中的重复图片。

思路

思路很简单,用内置的os.walk遍历图片目录,然后用第三方库hashlib对目录中的图片做md5计算,存入一个字典中,遇到字典中已存在的md5则删除该文件,达到去重复的目的。

代码

import hashlib, os
# 先做一个函数计算文件的md5值
def getMD5(path):
    md5 = hashlib.md5()
    with open(path, 'rb') as f:
        while True:
            block = f.read(8096)
            if not block:
                break
            md5.update(block)
    return md5.hexdigest()

def main():
    md5list = {}
    # 遍历图片目录c:\pic
    for root, dirs, files in os.walk('c:/pic', topdown=False):
        # 删除重复文件
        for file in files:
            fpath = os.path.join(root, file)
            md5 = getMD5(fpath)
            if md5 in md5list:
                print('删除重复文件:', fpath)
                os.remove(fpath)
            else:
                md5list[md5] = fpath

if __name__ == '__main__':
    main()

效果

计算md5是比较费时的事情,如果文件数量和尺寸很大,会花费一些时间。不过亲测10万张图片处理也就是十来分钟的事情,完全可以接受。对于有强迫症的我来,经常跑一下这个小脚本,顿时感觉清爽了许多,呵呵。

推荐阅读更多精彩内容

  • 常用模块 认识模块 什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文...
    A_Python阅读 622评论 0 5
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 3,554评论 0 12
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 1,845评论 0 1
  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 923评论 0 10
  • 高阶函数:将函数作为参数 sortted()它还可以接收一个key函数来实现自定义的排序,reversec参数可反...
    royal_47a2阅读 90评论 0 0