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()
|