用python删除重复的图片

2018-02-06  本文已影响430人  wsf535

如下目录下有一些图片(来自12306的验证码)


样例图

我怎么把重复的图片删除呢?当然如果不多,比如下面几张,都是人为复制出来的,扫一眼就可以手动删除了,如果有10000张这样的图片并且命名没有规则呢?如下图:


image.png

那就用Python来帮我们做吧。

思路:
如果两个文件的大小不同,那么这两个文件肯定不同,如果两个文件大小相同并且MD5也相同则我们判定为两个文件相同

# coding: utf-8
import os
import md5
def getmd5(filename):
    file_txt = open(filename, 'rb').read()
    m = md5.new(file_txt)
    return m.hexdigest()
def main():
    path = 'C:\\Users\\wu\\Desktop\\pic\\1\\'
    all_size = {}
    total_file = 0
    total_delete = 0
    for file in os.listdir(path):
        total_file += 1
        real_path = os.path.join(path, file)
        if os.path.isfile(real_path) == True:
            size = os.stat(real_path).st_size
            name_and_md5 = [real_path, '']
            if size in all_size.keys():
                new_md5 = getmd5(real_path)
                if all_size[size][1] == '':
                    all_size[size][1] = getmd5(all_size[size][0])
                if new_md5 in all_size[size]:
                    os.remove(file)
                    print '删除', file
                    total_delete += 1
                else:
                    all_size[size].append(new_md5)
            else:
                all_size[size] = name_and_md5
    print '文件个数:', total_file
    print '删除个数:', total_delete
if __name__ == '__main__':
    main()

运行结果:删除的三张图是我手动复制增加的,与预期完全一样。

运行结果

参考 https://www.cnblogs.com/luolizhi/p/5591186.html

上一篇下一篇

猜你喜欢

热点阅读