几行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代码轻松删除电脑中的重复图片)