一、简介:

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

二、部分更改代码:

1.Label实现更新文件显示及跳过不可读文件:

  1. for i in range(0,len(listA)):
  2. str0 = StringVar()
  3. str0.set('loading..\n' + listA[i])
  4. Label(window, textvariable=str0, font=ft).place(relx=0.05, rely=0.4, width=450)
  5. try:
  6. with open(listA[i], 'rb', buffering=0) as f: # 二进制读取文
  7. #print(i)
  8. sha224 = hashlib.sha224() # 哈希 sha224
  9. f.read(2)
  10. while True:
  11. IV00 = f.read(8192) # 一次读取8192,分段读取,直至读取完毕
  12. sha224.update(IV00) # 拼接
  13. # print(IV00)
  14. if not IV00:
  15. break
  16. listB.append(sha224.hexdigest()) # 将sha224哈希值写入listB
  17. except:
  18. listB.append(str(i) + 'x')
  19. # print(sha224.hexdigest())
  20. progressbarOne['value'] += 1 # 进度值+1
  21. window.update()
  22. str0.set('run')

2.完成优化:

  1. if not os.path.exists('./log'):
  2. os.makedirs('./log')
  3. FN = str(int(time.time()))
  4. FNN = time.strftime('%Y-%m-%d', time.localtime(time.time()))
  5. with open('./log/' + FN + '.txt', 'w',encoding='utf-8') as f:
  6. #print(listD)
  7. if listD == []:
  8. f.write('del' + FNN + '\n' + (str('无重复文件')))
  9. else:
  10. f.write('del' + FNN + '\n' + '\n'.join(listD))
  11. # 删除文件↓
  12. for z in listD:
  13. if os.path.exists(z):
  14. os.remove(z)
  15. progressbarTwo['value'] = 2
  16. messagebox.showinfo("通知(Tips)", "完成!")#弹出结束通知
  17. path = os.path.abspath('./log/' + FN + '.txt')
  18. #print(path)
  19. os.startfile(path) # 打开文件

三、程序包:

delfilerbw11.dist.rar