使用Python管理桌面快捷键的工具

比如浏览文件夹、导出文件列表、整理特定类型的文件以及比对文本文件内容。本文将详细分析一个基于wxPython开发的文件管理工具,该工具提供了多种实用功能,代码结构清晰,易于理解和扩展。通过学习这个示例,你将掌握如何使用wxPython构建图形界面应用程序和实现常见的文件操作。
C:\pythoncode\new\shortcutfilemove.py

全部代码

import wx
import os
import shutil
import datetime
import difflib

class FileManagerFrame(wx.Frame):
    def __init__(self, parent, title):
        super(FileManagerFrame, self).__init__(parent, title=title, size=(800, 600))
        
        # 创建面板和工具栏
        self.panel = wx.Panel(self)
        self.toolbar = self.CreateToolBar()
        
        # 添加工具栏按钮
        browse_tool = self.toolbar.AddTool(wx.ID_ANY, "浏览", wx.ArtProvider.GetBitmap(wx.ART_FOLDER_OPEN), "浏览文件夹")
        export_tool = self.toolbar.AddTool(wx.ID_ANY, "导出", wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE), "导出结果")
        organize_tool = self.toolbar.AddTool(wx.ID_ANY, "整理", wx.ArtProvider.GetBitmap(wx.ART_REDO), "整理快捷方式")
        compare_tool = self.toolbar.AddTool(wx.ID_ANY, "比对", wx.ArtProvider.GetBitmap(wx.ART_LIST_VIEW), "比对TXT文件")
        
        # 实现工具栏
        self.toolbar.Realize()
        
        # 绑定工具栏事件
        self.Bind(wx.EVT_TOOL, self.OnBrowse, browse_tool)
        self.Bind(wx.EVT_TOOL, self.OnExport, export_tool)
        self.Bind(wx.EVT_TOOL, self.OnOrganize, organize_tool)
        self.Bind(wx.EVT_TOOL, self.OnCompare, compare_tool)
        
        # 创建状态栏
        self.statusbar = self.CreateStatusBar()
        self.statusbar.SetStatusText("准备就绪")
        
        # 创建主布局
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        
        # 显示当前路径的文本框
        self.path_text = wx.TextCtrl(self.panel, style=wx.TE_READONLY)
        main_sizer.Add(self.path_text, 0, wx.EXPAND | wx.ALL, 5)
        
        # 创建列表框用于显示文件
        self.listbox = wx.ListBox(self.panel, style=wx.LB_SINGLE)
        main_sizer.Add(self.listbox, 1, wx.EXPAND | wx.ALL, 5)
        
        # 设置布局
        self.panel.SetSizerAndFit(main_sizer)
        
        # 当前选择的目录
        self.current_directory = ""
        # 文件列表
        self.file_list = []
        
        # 居中显示窗口
        self.Center()
        self.Show()

    def OnBrowse(self, event):
        """浏览按钮处理函数"""
        # 打开目录选择对话框
        dlg = wx.DirDialog(self, "选择要浏览的文件夹", style=wx.DD_DEFAULT_STYLE)
        if dlg.ShowModal() == wx.ID_OK:
            self.current_directory = dlg.GetPath()
            self.path_text.SetValue(self.current_directory)
            
            # 清空列表
            self.listbox.Clear()
            self.file_list = []
            
            # 开始遍历文件夹
            self.statusbar.SetStatusText("正在扫描文件夹...")
            self.TraverseDirectory(self.current_directory)
            self.statusbar.SetStatusText(f"扫描完成,共找到 {
     len(self.file_list)} 个文件")
        
        dlg.Destroy()

    def TraverseDirectory(self, directory):
        """遍历目录,获取所有文件"""
        try:
            for root, dirs, files in os.walk(directory):
                for file in files:
                    file_path = os.path.join(root, file)
                    rel_path = os.path.relpath(file_path, self.current_directory)
                    self.file_list.append(file_path)
                    self.listbox.Append(rel_path)
        except Exception as e:
            wx.MessageBox(f"遍历目录时发生错误: {
     str(e)}", "错误", wx.OK | wx.ICON_ERROR)
    
    def OnExport(self, event):
        """导出按钮处理函数"""
        if not self.file_list:
            wx.MessageBox("没有可导出的内容,请先浏览文件夹", "提示", wx.OK | wx.ICON_INFORMATION)
            return
        
        # 打开保存文件对话框
        current_time = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
        default_filename = f"文件列表_{
     current_time}.txt"
        
        dlg = wx.FileDialog(
            self, "导出文件列表", wildcard="文本文件 (*.txt)|*.txt",
            style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT,
            defaultFile=default_filename
        )
        
        if dlg.ShowModal() == wx.ID_OK:
            save_path = dlg.GetPath()
            try:
                with open(save_path, 'w', encoding='utf-8') as f:
                    f.write(f"文件列表 - {
     self.current_directory}\n")
                    f.write(f"导出时间: {
     datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
                    f.write("-" * 50 + "\n\n")
                    
                    for file_path in self.file_list:
                        f.write(f"{
     file_path}\n")
                
                self.statusbar.SetStatusText(f"成功导出到 {
     save_path}")
                wx.MessageBox(f"已成功导出文件列表到:\n{
     save_path}", "导出成功", wx.OK | wx.ICON_INFORMATION)
            
            except Exception as
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值