介绍
本文将介绍如何使用python和其库来编写一个文件重复检查器。我们将利用wxpython模块来构建图形用户界面,使用hashlib库生成文件的md5哈希值,并借助sqlite3库将文件的md5码存储在sqlite数据库中,最后找出存在重复文件的情况。
全部代码
import wx import os import hashlib import sqlite3 class fileduplicatechecker(wx.frame): def __init__(self, parent, title): super(fileduplicatechecker, self).__init__(parent, title=title, size=(400, 300)) self.initui() self.centre() self.show() def initui(self): panel = wx.panel(self) vbox = wx.boxsizer(wx.vertical) self.dir_picker = wx.dirpickerctrl(panel, message="select a folder", style=wx.dirp_dir_must_exist) self.dir_picker.bind(wx.evt_dirpicker_changed, self.ondirselect) vbox.add(self.dir_picker, flag=wx.all | wx.expand, border=10) self.result_text = wx.textctrl(panel, style=wx.te_multiline | wx.te_readonly) vbox.add(self.result_text, proportion=1, flag=wx.expand | wx.all, border=10) panel.setsizer(vbox) def ondirselect(self, event): selected_dir = self.dir_picker.getpath() files_md5 = self.get_files_md5(selected_dir) duplicates = self.find_duplicates(files_md5) result = "duplicate files:\n" for file_path in duplicates: result += f"{file_path}\n" self.result_text.setvalue(result) def get_files_md5(self, folder): files_md5 = {} for root, _, files in os.walk(folder): for file in files: file_path = os.path.join(root, file) with open(file_path, "rb") as f: content = f.read() md5_hash = hashlib.md5(content).hexdigest() if md5_hash in files_md5: files_md5[md5_hash].append(file_path) else: files_md5[md5_hash] = [file_path] return files_md5 def find_duplicates(self, files_md5): duplicates = [] for md5_hash, file_paths in files_md5.items(): if len(file_paths) > 1: duplicates.extend(file_paths) return duplicates if __name__ == '__main__': app = wx.app() fileduplicatechecker(none, title='file duplicate checker') app.mainloop()
准备工作
在开始之前,请确保已经安装了以下python库:
- wxpython:用于构建图形用户界面
- hashlib:用于生成文件的md5哈希值
- sqlite3:用于操作sqlite数据库
你可以通过pip安装这些库:
pip install wxpython hashlib sqlite3
编写代码
我们将编写一个简单的python程序,其中包含gui界面,文件遍历、md5哈希生成以及重复文件查找的功能。完整的代码示例已经在前面的代码块中给出。
运行程序
运行代码后,一个gui界面将显示出来,你可以选择一个文件夹,程序将遍历该文件夹中的所有文件,生成它们的md5码并保存在sqlite数据库中。最后,程序将列出所有存在重复的文件。
结论
通过这个简单的文件重复检查器,我们可以轻松地找出文件夹中存在的重复文件,从而更好地管理和清理文件。这个程序可以帮助我们节省存储空间,避免混乱的文件管理情况。
以上就是使用python编写文件重复检查器的完整代码的详细内容,更多关于python文件重复检查器的资料请关注代码网其它相关文章!
发表评论