删除重复的图片(文件)的脚本
发布时间:2021-04-22 22:10:03
作者:ynkulusi
一个删除重复图片的脚本,改下文件后缀类型,可以删除各种类型的重复文件
通过计算md5值来区分文件是否重复。
通过计算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
评论数:0
阅读数:857