欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中使用?zipfile創(chuàng)建文件壓縮工具

 更新時(shí)間:2023年09月02日 09:42:46   作者:winfredzhang  
這篇文章主要介紹了Python中使用zipfile創(chuàng)建文件壓縮工具,通過使用 wxPython 模塊,我們創(chuàng)建了一個(gè)簡(jiǎn)單而實(shí)用的文件壓縮工具,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的ca參考借鑒價(jià)值,需要的朋友可以參考下

在本篇博客中,我們將使用 wxPython 模塊創(chuàng)建一個(gè)簡(jiǎn)單的文件壓縮工具。該工具具有圖形用戶界面(GUI),可以選擇源文件夾中的文件,將其壓縮為 ZIP 文件,并將壓縮文件保存到目標(biāo)文件夾中。C:\pythoncode\new\zipmultifile.py

在這里插入圖片描述

準(zhǔn)備工作

在開始之前,請(qǐng)確保已經(jīng)安裝了 wxPython 模塊。你可以使用以下命令來安裝:

pip install wxPython

創(chuàng)建 GUI 界面

首先,我們導(dǎo)入所需的模塊,并創(chuàng)建一個(gè) MyFrame 類來表示我們的應(yīng)用程序窗口。

import wx
import wx.lib.agw.multidirdialog as MDD
import os
import datetime
import zipfile
class MyFrame(wx.Frame):
    # ...

MyFrame 類的構(gòu)造函數(shù)中,我們創(chuàng)建了窗口上的各個(gè)控件,包括選擇源文件夾的按鈕、顯示文件列表的 Listbox、選擇目標(biāo)文件夾的按鈕以及 Zip 按鈕。我們還定義了兩個(gè)實(shí)例變量 source_folder target_folder 分別用于存儲(chǔ)選擇的源文件夾和目標(biāo)文件夾的路徑。

實(shí)現(xiàn)事件處理函數(shù)

我們?yōu)檫x擇源文件夾按鈕綁定了 on_select_source_folder 方法,該方法會(huì)打開文件夾選擇對(duì)話框,并在選擇完成后加載文件列表到 Listbox 中。

def on_select_source_folder(self, event):
    dlg = MDD.MultiDirDialog(self, title="選擇源文件夾")
    if dlg.ShowModal() == wx.ID_OK:
        self.source_folder = dlg.GetPaths()[0]
        self.load_files()
    dlg.Destroy()

類似地,我們?yōu)檫x擇目標(biāo)文件夾按鈕綁定了 on_select_target_folder 方法,該方法會(huì)打開文件夾選擇對(duì)話框,并在選擇完成后存儲(chǔ)目標(biāo)文件夾的路徑。

def on_select_target_folder(self, event):
    dlg = MDD.MultiDirDialog(self, title="選擇目標(biāo)文件夾")
    if dlg.ShowModal() == wx.ID_OK:
        self.target_folder = dlg.GetPaths()[0]
    dlg.Destroy()

最后,我們?yōu)?Zip 按鈕綁定了 on_zip 方法,該方法會(huì)檢查是否選擇了要壓縮的文件,如果是,則創(chuàng)建一個(gè) ZIP 文件,將選擇的文件添加到壓縮文件中,并保存到目標(biāo)文件夾中。

def on_zip(self, event):
    selected_files = [self.listbox.GetString(i) for i in self.listbox.GetSelections()]
    if len(selected_files) == 0:
        wx.MessageBox("請(qǐng)先選擇要壓縮的文件!", "錯(cuò)誤", wx.OK | wx.ICON_ERROR)
        return
    now = datetime.datetime.now()
    zip_filename = os.path.join(self.target_folder, now.strftime("%Y%m%d") + ".zip")
    with zipfile.ZipFile(zip_filename, 'w') as zipf:
        for file in selected_files:
            file_path = os.path.join(self.source_folder, file)
            zipf.write(file_path, file)
    wx.MessageBox("文件已成功壓縮為 ZIP 文件!", "成功", wx.OK | wx.ICON_INFORMATION)

啟動(dòng)應(yīng)用程序

最后,我們創(chuàng)建一個(gè) wxPython 應(yīng)用程序?qū)嵗@示窗口。

app = wx.App()
frame = MyFrame(None, title="ZIP 文件壓縮")
frame.Show()
app.MainLoop()

全部代碼

import wx
import wx.lib.agw.multidirdialog as MDD
import os
import datetime
import zipfile
class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MyFrame, self).__init__(parent, title=title, size=(600, 400))
        self.panel = wx.Panel(self)
        self.source_folder_btn = wx.Button(self.panel, label="選擇源文件夾", pos=(10, 10))
        self.source_folder_btn.Bind(wx.EVT_BUTTON, self.on_select_source_folder)
        self.listbox = wx.ListBox(self.panel, pos=(10, 50), size=(200, 300), style=wx.LB_MULTIPLE)
        self.target_folder_btn = wx.Button(self.panel, label="選擇目標(biāo)文件夾", pos=(250, 10))
        self.target_folder_btn.Bind(wx.EVT_BUTTON, self.on_select_target_folder)
        self.zip_btn = wx.Button(self.panel, label="Zip", pos=(500, 10))
        self.zip_btn.Bind(wx.EVT_BUTTON, self.on_zip)
        self.source_folder = ""
        self.target_folder = ""
    def on_select_source_folder(self, event):
        dlg = MDD.MultiDirDialog(self, title="選擇源文件夾")
        if dlg.ShowModal() == wx.ID_OK:
            self.source_folder = dlg.GetPaths()[0]
            self.load_files()
        dlg.Destroy()
    def load_files(self):
        self.listbox.Clear()
        files = os.listdir(self.source_folder)
        for file in files:
            self.listbox.Append(file)
    def on_select_target_folder(self, event):
        dlg = MDD.MultiDirDialog(self, title="選擇目標(biāo)文件夾")
        if dlg.ShowModal() == wx.ID_OK:
            self.target_folder = dlg.GetPaths()[0]
        dlg.Destroy()
    def on_zip(self, event):
        selected_files = [self.listbox.GetString(i) for i in self.listbox.GetSelections()]
        if len(selected_files) == 0:
            wx.MessageBox("請(qǐng)先選擇要壓縮的文件!", "錯(cuò)誤", wx.OK | wx.ICON_ERROR)
            return
        now = datetime.datetime.now()
        zip_filename = os.path.join(self.target_folder, now.strftime("%Y%m%d") + ".zip")
        with zipfile.ZipFile(zip_filename, 'w') as zipf:
            for file in selected_files:
                file_path = os.path.join(self.source_folder, file)
                zipf.write(file_path, file)
        wx.MessageBox("文件已成功壓縮為 ZIP 文件!", "成功", wx.OK | wx.ICON_INFORMATION)
app = wx.App()
frame = MyFrame(None, title="ZIP 文件壓縮")
frame.Show()
app.MainLoop()

總結(jié)

通過使用 wxPython 模塊,我們創(chuàng)建了一個(gè)簡(jiǎn)單而實(shí)用的文件壓縮工具。該工具具有直觀的圖形用戶界面,可以方便地選擇源文件夾和目標(biāo)文件夾,并將選擇的文件壓縮為 ZIP 格式。你可以按照自己的需求對(duì)代碼進(jìn)行修改和擴(kuò)展,以滿足更多復(fù)雜的壓縮需求。

到此這篇關(guān)于Python中使用 zipfile創(chuàng)建文件壓縮工具的文章就介紹到這了,更多相關(guān)zipfile文件壓縮工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 如何比較兩集合的大小關(guān)系

    python 如何比較兩集合的大小關(guān)系

    這篇文章主要介紹了python 比較兩集合的大小關(guān)系操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python3如何去除字符串中的特殊字符

    python3如何去除字符串中的特殊字符

    這篇文章主要介紹了python3如何去除字符串中的特殊字符,在平時(shí)處理字符串的時(shí)候,經(jīng)常會(huì)遇到字符串中夾雜著我們不希望看到的特殊字符,那么如何處理這些特殊字符呢,今天就跟著小編來看看吧
    2023-04-04
  • Python實(shí)現(xiàn)國外賭場(chǎng)熱門游戲Craps(雙骰子)

    Python實(shí)現(xiàn)國外賭場(chǎng)熱門游戲Craps(雙骰子)

    這篇文章主要介紹了Python實(shí)現(xiàn)國外賭場(chǎng)熱門游戲Craps(雙骰子)的源碼及運(yùn)行方法,十分簡(jiǎn)單,有需要的小伙伴可以參考下。
    2015-03-03
  • Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單三層神經(jīng)網(wǎng)絡(luò)的搭建及測(cè)試 代碼解析

    Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單三層神經(jīng)網(wǎng)絡(luò)的搭建及測(cè)試 代碼解析

    一個(gè)完整的神經(jīng)網(wǎng)絡(luò)一般由三層構(gòu)成:輸入層,隱藏層(可以有多層)和輸出層。本文所構(gòu)建的神經(jīng)網(wǎng)絡(luò)隱藏層只有一層。一個(gè)神經(jīng)網(wǎng)絡(luò)主要由三部分構(gòu)成(代碼結(jié)構(gòu)上):初始化,訓(xùn)練,和預(yù)測(cè)。,需要的朋友可以參考下面文章內(nèi)容的具體內(nèi)容
    2021-09-09
  • 在Python Flask App中獲取已發(fā)布的JSON對(duì)象的解決方案

    在Python Flask App中獲取已發(fā)布的JSON對(duì)象的解決方案

    這篇文章主要介紹了在Python Flask App中獲取已發(fā)布的JSON對(duì)象的解決方案,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • Pycharm連接gitlab實(shí)現(xiàn)過程圖解

    Pycharm連接gitlab實(shí)現(xiàn)過程圖解

    這篇文章主要介紹了Pycharm連接gitlab實(shí)現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • django中ImageField的使用詳解

    django中ImageField的使用詳解

    這篇文章主要介紹了django中ImageField的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法

    tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法

    本篇文章主要介紹了tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python冒泡排序注意要點(diǎn)實(shí)例詳解

    Python冒泡排序注意要點(diǎn)實(shí)例詳解

    本文給大家介紹了python冒泡排序知識(shí),涉及到冒泡排序主要的細(xì)節(jié)問題,本文通過實(shí)例代碼給大家講解,介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • Python發(fā)送郵件測(cè)試報(bào)告操作實(shí)例詳解

    Python發(fā)送郵件測(cè)試報(bào)告操作實(shí)例詳解

    這篇文章主要介紹了Python發(fā)送郵件測(cè)試報(bào)告操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python郵件發(fā)送相關(guān)模塊使用及操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12

最新評(píng)論