Python wxPython创建文件复制工具

 更新时间:2025年02月05日 15:15:44   作者:winfredzhang  
wxPython是一个功能强大的 GUI 框架,它允许开发者通过 Python 轻松构建跨平台的桌面应用,本文将使用wxPython创建一个文件复制工具,感兴趣的可以了解下

在 wxPython 中实现文件复制工具:如何通过 GUI 选择源文件夹与目标文件夹

wxPython 是一个功能强大的 GUI 框架,它允许开发者通过 Python 轻松构建跨平台的桌面应用。在这篇博客中,我将展示如何利用 wxPython 创建一个文件复制工具,使得用户能够选择源文件夹和目标文件夹,并将源文件夹中的文件复制到目标文件夹下一个以当前日期命名的子文件夹中。

目标功能

选择源文件夹:用户能够选择一个源文件夹,程序将从中获取文件。

选择目标文件夹:用户能够选择目标文件夹,程序将在该文件夹中创建一个以当前日期命名的子文件夹。

文件复制:将源文件夹中的所有文件复制到目标文件夹中的子文件夹。

前提准备

在开始之前,请确保已经安装了 wxPython 和 shutil 模块。

你可以通过以下命令安装 wxPython:

pip install wxPython

shutil 是 Python 的标准库之一,用于处理文件和目录,因此无需单独安装。

实现步骤

1. 创建主窗口

首先,我们需要创建一个简单的 GUI 窗口,在其中添加按钮和文本框,允许用户选择源文件夹和目标文件夹。

import wx
import os
import shutil
from datetime import datetime

# 创建主窗口类
class FileCopyApp(wx.Frame):
    def __init__(self, *args, **kw):
        super(FileCopyApp, self).__init__(*args, **kw)
        
        self.InitUI()
        
    def InitUI(self):
        # 设置窗口
        self.SetTitle('文件复制工具')
        self.SetSize(400, 250)
        panel = wx.Panel(self)
        
        # 创建控件
        vbox = wx.BoxSizer(wx.VERTICAL)
        
        # 源文件夹选择按钮
        self.src_folder_button = wx.Button(panel, label="选择源文件夹")
        self.src_folder_button.Bind(wx.EVT_BUTTON, self.onSelectSourceFolder)
        vbox.Add(self.src_folder_button, flag=wx.EXPAND | wx.ALL, border=10)
        
        # 显示源文件夹路径
        self.src_folder_text = wx.TextCtrl(panel, style=wx.TE_READONLY)
        vbox.Add(self.src_folder_text, flag=wx.EXPAND | wx.ALL, border=10)
        
        # 目标文件夹选择按钮
        self.dst_folder_button = wx.Button(panel, label="选择目标文件夹")
        self.dst_folder_button.Bind(wx.EVT_BUTTON, self.onSelectDestinationFolder)
        vbox.Add(self.dst_folder_button, flag=wx.EXPAND | wx.ALL, border=10)
        
        # 显示目标文件夹路径
        self.dst_folder_text = wx.TextCtrl(panel, style=wx.TE_READONLY)
        vbox.Add(self.dst_folder_text, flag=wx.EXPAND | wx.ALL, border=10)
        
        # 复制按钮
        self.copy_button = wx.Button(panel, label="复制文件")
        self.copy_button.Bind(wx.EVT_BUTTON, self.onCopyFiles)
        vbox.Add(self.copy_button, flag=wx.EXPAND | wx.ALL, border=10)
        
        panel.SetSizer(vbox)
    
    def onSelectSourceFolder(self, event):
        # 弹出文件夹选择对话框
        dlg = wx.DirDialog(self, "选择源文件夹", style=wx.DD_DEFAULT_STYLE)
        if dlg.ShowModal() == wx.ID_OK:
            self.src_folder_text.SetValue(dlg.GetPath())
        dlg.Destroy()
    
    def onSelectDestinationFolder(self, event):
        # 弹出文件夹选择对话框
        dlg = wx.DirDialog(self, "选择目标文件夹", style=wx.DD_DEFAULT_STYLE)
        if dlg.ShowModal() == wx.ID_OK:
            self.dst_folder_text.SetValue(dlg.GetPath())
        dlg.Destroy()

    def onCopyFiles(self, event):
        src_folder = self.src_folder_text.GetValue()
        dst_folder = self.dst_folder_text.GetValue()
        
        if not src_folder or not dst_folder:
            wx.MessageBox("请先选择源文件夹和目标文件夹", "错误", wx.ICON_ERROR)
            return
        
        # 创建目标文件夹中以当前日期命名的子文件夹 (格式:yyyymmdd)
        today = datetime.today().strftime('%Y%m%d')
        date_folder = os.path.join(dst_folder, today)
        
        if not os.path.exists(date_folder):
            os.makedirs(date_folder)
        
        # 遍历源文件夹中的所有文件,复制到目标文件夹中的日期子文件夹
        for filename in os.listdir(src_folder):
            src_file = os.path.join(src_folder, filename)
            dst_file = os.path.join(date_folder, filename)
            
            if os.path.isfile(src_file):
                shutil.copy(src_file, dst_file)
        
        wx.MessageBox("文件复制完成", "成功", wx.ICON_INFORMATION)

# 运行应用程序
def main():
    app = wx.App(False)
    frame = FileCopyApp(None, title='文件复制工具')
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()

2. 功能解释

主窗口:创建了一个包含两个按钮(选择源文件夹和目标文件夹)以及对应的文本框来显示文件夹路径的窗口。

选择源文件夹:使用 wx.DirDialog 弹出文件夹选择对话框,让用户选择源文件夹路径。

选择目标文件夹:同样地,使用 wx.DirDialog 让用户选择目标文件夹路径。

文件复制:当用户点击“复制文件”按钮时,程序会获取源文件夹和目标文件夹路径,然后在目标文件夹中以当前日期(yyyymmdd)为名称创建一个子文件夹,并将源文件夹中的所有文件复制到该子文件夹中。

3. 运行和使用

启动程序后,您会看到一个简单的 GUI 窗口。

点击 “选择源文件夹” 按钮,选择需要复制文件的源文件夹。

点击 “选择目标文件夹” 按钮,选择要将文件复制到的目标文件夹。

点击 “复制文件” 按钮,程序会自动将源文件夹中的所有文件复制到目标文件夹中,以当前日期为名称创建一个子文件夹。

4. 异常处理

我们添加了错误检查机制,确保:

  • 用户没有选择文件夹时,程序会弹出错误提示。
  • 目标文件夹不存在时,程序会自动创建一个新的日期文件夹。

效果图

到此这篇关于Python wxPython创建文件复制工具的文章就介绍到这了,更多相关Python文件复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV中VideoCapture类的使用详解

    OpenCV中VideoCapture类的使用详解

    这篇文章主要介绍了OpenCV中VideoCapture类的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • python实现复制大量文件功能

    python实现复制大量文件功能

    这篇文章主要为大家详细介绍了python实现复制大量文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python paramiko模块的使用示例

    Python paramiko模块的使用示例

    本篇文章主要介绍了Python paramiko模块的使用示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • python中open函数的基本用法示例

    python中open函数的基本用法示例

    这篇文章主要给大家介绍了关于python中open函数的基本用法,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • python3.7 打包成exe程序方式(只需两行命令)

    python3.7 打包成exe程序方式(只需两行命令)

    这篇文章主要介绍了python3.7 打包成exe程序方式(只需两行命令),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • python调用xlsxwriter创建xlsx的方法

    python调用xlsxwriter创建xlsx的方法

    今天小编就为大家分享一篇python调用xlsxwriter创建xlsx的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 使用NumPy读取MNIST数据的实现代码示例

    使用NumPy读取MNIST数据的实现代码示例

    这篇文章主要介绍了使用NumPy读取MNIST数据的实现代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 使用torchtext导入NLP数据集的操作

    使用torchtext导入NLP数据集的操作

    这篇文章主要介绍了使用torchtext导入NLP数据集的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 最新Pygame zero最全集合

    最新Pygame zero最全集合

    这篇文章主要介绍了最新Pygame zero最全集合,通过本文学习知道update函数是pygame zero自带的函数,每秒运行60次,当然也可以修改,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Python中Generators教程的实现

    Python中Generators教程的实现

    本文主要介绍了Python中Generators教程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论