最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在這里插入圖片描述

準備工作

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

pip install wxPython

創(chuàng)建 GUI 界面

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

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

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

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

我們?yōu)檫x擇源文件夾按鈕綁定了 on_select_source_folder 方法,該方法會打開文件夾選擇對話框,并在選擇完成后加載文件列表到 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擇目標文件夾按鈕綁定了 on_select_target_folder 方法,該方法會打開文件夾選擇對話框,并在選擇完成后存儲目標文件夾的路徑。

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

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

def on_zip(self, event):
    selected_files = [self.listbox.GetString(i) for i in self.listbox.GetSelections()]
    if len(selected_files) == 0:
        wx.MessageBox("請先選擇要壓縮的文件!", "錯誤", 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)

啟動應用程序

最后,我們創(chuàng)建一個 wxPython 應用程序?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="選擇目標文件夾", 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="選擇目標文件夾")
        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("請先選擇要壓縮的文件!", "錯誤", 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)建了一個簡單而實用的文件壓縮工具。該工具具有直觀的圖形用戶界面,可以方便地選擇源文件夾和目標文件夾,并將選擇的文件壓縮為 ZIP 格式。你可以按照自己的需求對代碼進行修改和擴展,以滿足更多復雜的壓縮需求。

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

相關文章

  • Django 路由層URLconf的實現(xiàn)

    Django 路由層URLconf的實現(xiàn)

    這篇文章主要介紹了Django 路由層URLconf的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 使用Matplotlib創(chuàng)建基本圖表的詳細指南

    使用Matplotlib創(chuàng)建基本圖表的詳細指南

    Matplotlib 是一個功能強大的 Python 庫,用于創(chuàng)建各種類型的圖表和可視化,在本文中,我們將提供一個完整的指南,介紹如何使用 Matplotlib 創(chuàng)建基本的圖表,包括折線圖、散點圖、柱狀圖和餅圖,感興趣的小伙伴跟著小編一起來看看吧
    2024-05-05
  • python3寫爬取B站視頻彈幕功能

    python3寫爬取B站視頻彈幕功能

    本篇文章給大家講解一下如何用python3寫出爬取B站視頻彈幕的功能,有興趣的讀者們參考學習下吧。
    2017-12-12
  • python 示例分享---邏輯推理編程解決八皇后

    python 示例分享---邏輯推理編程解決八皇后

    八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。
    2014-07-07
  • Python3爬蟲關于識別點觸點選驗證碼的實例講解

    Python3爬蟲關于識別點觸點選驗證碼的實例講解

    在本篇文章里小編給大家整理了關于Python3爬蟲關于識別點觸點選驗證碼的實例講解內(nèi)容,需要的朋友們可以參考下。
    2020-07-07
  • Python數(shù)據(jù)分析之Numpy庫的使用詳解

    Python數(shù)據(jù)分析之Numpy庫的使用詳解

    NumPy(Numerical Python)是Python的一種開源的數(shù)值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構要高效的多(該結(jié)構也可以用來表示矩陣(matrix)),支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學函數(shù)庫
    2021-11-11
  • Python的mysql數(shù)據(jù)庫的更新如何實現(xiàn)

    Python的mysql數(shù)據(jù)庫的更新如何實現(xiàn)

    這篇文章主要介紹了Python的mysql數(shù)據(jù)庫的更新如何實現(xiàn)的相關資料,這里提供實例代碼,幫助大家理解應用這部分知識,需要的朋友可以參考下
    2017-07-07
  • 對Python3使運行暫停的方法詳解

    對Python3使運行暫停的方法詳解

    今天小編就為大家分享一篇對Python3使運行暫停的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 三分鐘教會你用Python+OpenCV批量裁剪xml格式標注的圖片

    三分鐘教會你用Python+OpenCV批量裁剪xml格式標注的圖片

    最近學習網(wǎng)絡在線課程的過程中,為了方便課后復習,使用手機截取了大量的圖片,下面這篇文章主要給大家介紹了如何通過三分鐘教會你用Python+OpenCV批量裁剪xml格式標注圖片的相關資料,需要的朋友可以參考下
    2022-01-01
  • 回調(diào)函數(shù)的意義以及python實現(xiàn)實例

    回調(diào)函數(shù)的意義以及python實現(xiàn)實例

    本篇文章主要介紹了回調(diào)函數(shù)的意義以及python實現(xiàn)實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

改则县| 秦皇岛市| 黄浦区| 峡江县| 齐齐哈尔市| 石狮市| 理塘县| 巴南区| 得荣县| 德江县| 墨竹工卡县| 清苑县| 东乡县| 江陵县| 来安县| 石城县| 永康市| 赣州市| 武冈市| 鹰潭市| 高密市| 即墨市| 平度市| 中阳县| 永胜县| 霍州市| 洪洞县| 青川县| 宁远县| 曲周县| 神木县| 洛南县| 临泉县| 满城县| 谷城县| 成安县| 马山县| 方山县| 潮安县| 曲麻莱县| 西乡县|