一、简介:
算不上迭代,上次发布为本次基础。
1.优化完成提示,并将查重或删除日志更改在文件目录log文件夹下,以时间戳区分,内容明确是查重还是删除,以‘look’和‘del’做区分;
2.优化界面显示,让正在进行哈希验证的文件一一展示;
3.对于损坏文件无法读取的情况做保守的跳过处理,防止程序无法顺利运行;
4.可以直接对根目录,Windows下即为盘符,进行去重。
5.展示视频:

二、部分更改代码:
1.Label实现更新文件显示及跳过不可读文件:
for i in range(0,len(listA)):str0 = StringVar()str0.set('loading..\n' + listA[i])Label(window, textvariable=str0, font=ft).place(relx=0.05, rely=0.4, width=450)try:with open(listA[i], 'rb', buffering=0) as f: # 二进制读取文#print(i)sha224 = hashlib.sha224() # 哈希 sha224f.read(2)while True:IV00 = f.read(8192) # 一次读取8192,分段读取,直至读取完毕sha224.update(IV00) # 拼接# print(IV00)if not IV00:breaklistB.append(sha224.hexdigest()) # 将sha224哈希值写入listBexcept:listB.append(str(i) + 'x')# print(sha224.hexdigest())progressbarOne['value'] += 1 # 进度值+1window.update()str0.set('run')
2.完成优化:
if not os.path.exists('./log'):os.makedirs('./log')FN = str(int(time.time()))FNN = time.strftime('%Y-%m-%d', time.localtime(time.time()))with open('./log/' + FN + '.txt', 'w',encoding='utf-8') as f:#print(listD)if listD == []:f.write('del' + FNN + '\n' + (str('无重复文件')))else:f.write('del' + FNN + '\n' + '\n'.join(listD))# 删除文件↓for z in listD:if os.path.exists(z):os.remove(z)progressbarTwo['value'] = 2messagebox.showinfo("通知(Tips)", "完成!")#弹出结束通知path = os.path.abspath('./log/' + FN + '.txt')#print(path)os.startfile(path) # 打开文件
