前言
今天开始新的文集,将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万张图片处理也就是十来分钟的事情,完全可以接受。对于有强迫症的我来,经常跑一下这个小脚本,顿时感觉清爽了许多,呵呵。
网友评论