Python wxPython创建文件复制工具!
Python wxPython创建文件复制工具!
在 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 wximport osimport shutilfrom 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创建文件复制工具的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。
