广告位联系
返回顶部
分享到

Python wxPython创建文件复制工具的方法

python 来源:互联网 作者:佚名 发布时间:2025-02-06 19:44:52 人浏览
摘要

在 wxPython 中实现文件复制工具:如何通过 GUI 选择源文件夹与目标文件夹 wxPython 是一个功能强大的 GUI 框架,它允许开发者通过 Python 轻松构建跨平台的桌面应用。在这篇博客中,我将展示如何

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

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

目标功能

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

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

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

前提准备

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

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

1

pip install wxPython

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

实现步骤

1. 创建主窗口

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

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. 异常处理

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

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

效果图


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计