python 利用md5去重 转载
import hashlib
import os
import time
from tqdm import tqdm
def getmd5(filename):
"""
获取文件 md5 码
:param filename: 文件路径
:return: 文件 md5 码
"""
file_txt = open(filename, 'rb').read()
# 调用一个md5对象
m = hashlib.md5(file_txt)
# hexdigest()方法来获取摘要(加密结果)
return m.hexdigest()
def main():
# 文件夹路径
path ="D:\\b"
# 存放文件的 md5 码
all_md5 = []
total_file = 0
total_delete = 0
# 开始时间
start = time.time()
# 遍历文件夹下的所有文件
for file in tqdm(os.listdir(path)):
# 文件数量加 1
total_file += 1
# 文件的路径
real_path = os.path.join(path, file)
# 判断文件是否是文件
if os.path.isfile(real_path) == True:
# 获取文件的md5码
filemd5 = getmd5(real_path)
# 如果文件 md5 已存在,则删除此文件
if filemd5 in all_md5:
total_delete += 1
print('删除', file)
else:
# 如果文件 md5 不存在,则将此文件的 md5 码添加到 all_md5 列表中
all_md5.append(filemd5)
# 结束时间
end = time.time()
time_last = end - start
print('文件总数:', total_file)
print('删除个数:', total_delete)
print('耗时:', time_last, '秒')
if __name__ == '__main__':
main()