当前位置: 代码网 > it编程>前端脚本>Python > 使用Python编写文件重复检查器的完整代码

使用Python编写文件重复检查器的完整代码

2024年08月06日 Python 我要评论
介绍本文将介绍如何使用python和其库来编写一个文件重复检查器。我们将利用wxpython模块来构建图形用户界面,使用hashlib库生成文件的md5哈希值,并借助sqlite3库将文件的md5码存

介绍

本文将介绍如何使用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文件重复检查器的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com