一、简介:
算不上迭代,上次发布为本次基础。
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() # 哈希 sha224
f.read(2)
while True:
IV00 = f.read(8192) # 一次读取8192,分段读取,直至读取完毕
sha224.update(IV00) # 拼接
# print(IV00)
if not IV00:
break
listB.append(sha224.hexdigest()) # 将sha224哈希值写入listB
except:
listB.append(str(i) + 'x')
# print(sha224.hexdigest())
progressbarOne['value'] += 1 # 进度值+1
window.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'] = 2
messagebox.showinfo("通知(Tips)", "完成!")#弹出结束通知
path = os.path.abspath('./log/' + FN + '.txt')
#print(path)
os.startfile(path) # 打开文件