Java教程

hashlib.md5()函数来筛选出系统重复文件并移除...

本文主要是介绍hashlib.md5()函数来筛选出系统重复文件并移除...,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。

file

主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件通过MD5函数的对比筛选出来,最后将重复的文件移除。

file

用到的第三方库都比较的常见,其中只有hashlib是用来对比文件的不是很常见。其他的都是一些比较常见的第三方库用来做辅助操作。

import os  # 应用文件操作
import hashlib  # 文件对比操作
import logging  # 日志函数操作
import sys  # 系统应用操作

日志的设置基本都是这一套的范式,按照规则设置好日志打印的相关信息。

logger = logging.getLogger('系统文件去重')
logging.basicConfig(format='%(asctime)s %(levelname)-8s: %(message)s')
logger.setLevel(logging.DEBUG)

文件去重的实现逻辑代码块如下:

diretory = input('请输入需要整理的文件目录: \n')  # 去重的文件夹路径

if os.path.isdir(diretory):
    logger.info('当前目录[' + diretory + ']校验成功!')
    md5s = []
    for file_path, dir_names, file_names in os.walk(r'' + diretory):
        for file_name in file_names:
            try:
                file_name_path = os.path.join(file_path, file_name)
                logger.info('当前比对路径: '+ file_name_path)
                md5 = hashlib.md5()
                file = open(file_name_path, "rb")
                md5.update(file.read())
                file.close()
                md5_value = md5.hexdigest()
                if md5_value in md5s:
                    os.remove(file_name_path)
                    logger.info('[' + file_name_path + ']出现重复已经移除!')
                else:
                    md5s.append(md5_value)
            except:
                logger.error('[' + file_name_path + ']对比发生异常,执行下一个!')

else:
    logger.error('输入的文件夹或者目录不存在!')

以上就是文件去重的整个实现过程,用来做一个清理电脑文件的小工具还是比较实用的。

这篇关于hashlib.md5()函数来筛选出系统重复文件并移除...的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!