• 删除重复的图片(文件)的脚本

    发布时间:2021-04-22 22:10:03
    作者:ynkulusi
  • 一个删除重复图片的脚本,改下文件后缀类型,可以删除各种类型的重复文件
    通过计算md5值来区分文件是否重复。
     
    #!/usr/bin/env python
    # coding:UTF-8
    # -*- coding:utf-8 -*-
    
    #去除重复和图片大小小于2MB的图片
    
    import os,re,hashlib,platform
    from colorama import init,Fore,Back,Style
    
    init(autoreset=True)
    
    dirPath = input("输入图片所在目录(默认当前目录): ")
    if dirPath == '':
        dirPath = os.getcwd()
    
    if platform.system().lower() == 'linux':
        pathsign = '/'
    elif platform.system().lower() == 'windows':
        pathsign = '\\'
    
    picPath = dirPath + pathsign
    
    piclist = filter(lambda x:re.match(r'\S+.(jpg|png)$',x),os.listdir(picPath))
    
    md5code_list = []
    delfile_list = []
    for i in piclist:
        if os.path.isfile(picPath+i):
            #fsize = os.path.getsize(picPath+i)
            #print('图片[ '+i+' ]的大小容量为: '+str(fsize))
            #if fsize < 2097152:
            #    delfile_list.append(i)
            #    print('图片[ '+Fore.RED+i+Fore.RESET+' ]尺寸小于2MB,将被删除!')
            with open(picPath+pathsign+i,'rb') as f:
                data = f.read()
                md5code = hashlib.md5(data).hexdigest()
                print('图片[ '+Fore.BLUE+i+Fore.RESET+' ]的md5值为: '+Fore.GREEN+md5code)
                if md5code not in md5code_list:
                    md5code_list.append(md5code)
                else:
                    delfile_list.append(i)
                    print('图片[ '+Fore.RED+i+Fore.RESET+' ]重复,将被删除!')
    
    del_count = len(delfile_list)
    for i in set(delfile_list):   #如果判断图片大小也加入删除列表,可能有重复元素,用set过滤
        os.remove(picPath+pathsign+i)
    print('删除图片数量为: '+str(del_count))
    
  • 分类:python
    标签: python
    评论数:0 阅读数:857