经常在下载网络素材时有很多的反复文件乌七八糟的,于是想实现一个去重的操作。
【浏览全文】
次要实现思路就是遍历出某个文件夹包含其子文件夹上面的所有文件,最初,将所有文件通过MD5函数的比照筛选进去,最初将反复的文件移除。
用到的第三方库都比拟的常见,其中只有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)
文件去重的实现逻辑代码块如下:
<code class="pyhon">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('输出的文件夹或者目录不存在!')</code>
以上就是文件去重的整个实现过程,用来做一个清理电脑文件的小工具还是比拟实用的。