tft每日頭條

 > 科技

 > 自動壓縮文件夾的軟件python

自動壓縮文件夾的軟件python

科技 更新时间:2025-04-30 10:22:44

壓縮包也是我們平時工作中經常要接觸到的文件格式,壓縮文件後綴名通常有 .Zip、.rar、.7z 等等。Python 中也有專門用來操作壓縮包文件的第三方模塊 zipFile。聽這個名字就知道是用來操作壓縮包文件的了,這個第三方模塊也是我們本節課的重點,下面我們就一起來看一下。

1. zipfile 模塊介紹

zip 文件格式是通用的文檔壓縮标準,在 ziplib 模塊中,提供 ZipFile 類操作 zip 文件,如創建、讀取、寫入、附加、顯示壓縮文件等操作。

1.1 安裝

zipfile 是 Python 的第三方庫,使用前需要通過以下命令進行安裝:

pip install zipfile

1.2 使用步驟

步驟 1:導入 zipfile 模塊

import zipfile

步驟 2:實例化 zipfile 對象

z = zipfile.ZipFile(file, mode='r')

打開或者新建一個 zip 文件對象,第一個參數為 file 文件地址,第二個參數為打開模式,當模式參數是 ‘r’ 表示讀取現有的文件,為 ‘w’ 表示覆蓋或寫入一個新的文件,為 ‘a’ 表示将追加到現有文件。

步驟 3:進行壓縮文件操作

通過 zipfile 模塊提供的方法對壓縮文件進行創建、讀取、解壓等操作。

步驟 4:關閉壓縮文件

z = zipfile.ZipFile(file, mode='r') ...省略部分代碼 z.close()

注意:zipfile 在使用後,必須在退出程序之前調用 close () 方法否則将不會寫入關鍵記錄數據。

2. 使用 zipfile 模塊進行壓縮與解壓縮

現在 D:\code 目錄已有 code.zip,内容如下圖所示。

自動壓縮文件夾的軟件python(辦公自動化教程文件壓縮與解壓縮)1

接下來通過 zipfile 模塊對壓縮文件進行操作,zipfile 模塊操作壓縮文件常用方法見下表。

方法名

描述

namelist()

返回 ZIP 文件内所有成員名字列表

write()

添加文件到壓縮包内

extract(member[, path[, pwd]])

解壓單個文件,參數 members 表示 zipfile 對象中某個文件名,path 為解壓到的目的路徑,默認是壓縮包所在路徑,pwd 為壓縮包密碼,默認無密碼

extractall([path[, members[, pwd]]])

解壓所有文件,參數 path 為解壓到的目的路徑,默認是壓縮包所在路徑,members 默認值是壓縮包文件中所有文件名稱列表,也可以另外指定,pwd 為壓縮包密碼,默認無密碼

下面來具體看下每個方法的使用:

  1. namelist () 使用:

import zipfile, os zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'code.zip')) print(zipFile.namelist()) #輸出: ['code/', 'code/index.py', 'code/newimage/', 'code/writeppt.py', 'code/writeword.py']

代碼解釋:namelist () 方法獲取壓縮包中所有文件的名字,并組成列表返回。首先通過 ZipFile 實例化 zip 文件對象,其中壓縮文件這裡通過 OS 模塊的 join 方法進行拼接,返回一個絕對路徑。通過 namelist () 方法打印輸出:

['code/', 'code/index.py', 'code/newimage/', 'code/writeppt.py', 'code/writeword.py']

  1. write () 使用:

import zipfile, os zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'code.zip'),'a') zipFile.write("test.txt") print(zipFile.namelist()) #輸出: ['code/', 'code/index.py', 'code/newimage/', 'code/writeppt.py', 'code/writeword.py','code/test.txt']

代碼解釋:write () 方法為添加文件到壓縮文件,在 D:\code 目錄下,創建 test.txt 文件,通過 wirte () 方法添加到現有壓縮文件 code.zip 中,執行完成後,通過 namelist () 方法重寫打印壓縮文件中所有成員名字列表,輸出 ['code/', 'code/index.py', 'code/newimage/', 'code/writeppt.py', 'code/writeword.py','code/test.txt']。上述代碼中需要注意:

向壓縮文件中寫入内容時,注意修改 zipFile 實例化處的模式,默認為 “r”,表示隻讀,不可以寫入,設置為 “w” 後可以寫入,但會覆蓋原有壓縮文件中内容,如果想要追加,設置為 “a” 即可。

  1. extract () 使用:

import zipfile, os zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'code.zip')) for file in zipFile.namelist(): zipFile.extract(file) zipFile.close()

代碼解釋:extract () 方法為單個壓縮文件解壓,代碼中結合 namelist () 方法将 D:\code\code.zip 進行解壓縮操作,解壓後效果如下圖所示。

自動壓縮文件夾的軟件python(辦公自動化教程文件壓縮與解壓縮)2

  1. extractall () 使用:

import zipfile, os zipFile = zipfile.ZipFile(os.path.join(os.getcwd(), 'code.zip')) zipFile.extractall() zipFile.close()

代碼解釋:extractall () 方法為解壓 zip 文檔中的所有文件到指定目錄,默認為壓縮包所在路徑,即當前目錄。代碼執行完成後,效果同 extract () 結合 namelist () 方法進行解壓操作一樣。

3. zipfile 模塊實戰

在上一小節中,使用 os 模塊封裝了程序遇到異常情況時記錄錯誤日志文件的方法,本小節 zipfile 模塊實戰在上一小節代碼的基礎上進行實現。

在服務器上存儲的錯誤日志文件,一定周期需要進行下載,為了防止下載過程中出現文件丢失或亂碼的情況,通常采用創建壓縮包的形式。但手動創建無疑是費時費力且容易出現錯誤的,這時可以使用 zipfile 模塊結合 os 模塊,實現将 2020 年下,每個月份的錯誤日志記錄文件夾,創建相對的壓縮文件,如 1 月,對應 1.zip,2 月對應 2.zip。目前服務器上 1-11 月的錯誤日志文件存儲結構如下圖所示。

以 1 月為例,1 月文件夾下的文件存儲結構如下圖所示。

自動壓縮文件夾的軟件python(辦公自動化教程文件壓縮與解壓縮)3

自動壓縮文件夾的軟件python(辦公自動化教程文件壓縮與解壓縮)4

根據上述需求背景,封裝後的代碼如下:

import zipfile import os # 制定要生成壓縮文件的路徑 filepath = "./2020" # 創建壓縮文件 def createzipfile(month): # 壓縮包文件名稱 zipName = month '.zip' f = zipfile.ZipFile(zipName, 'a') # 遍曆當前文件夾 for dirpath, dirnames, filenames in os.walk(filepath "/" month): for filename in filenames: f.write(os.path.join(dirpath, filename)) f.close() # 遍曆當前目錄下的文件夾 for item in os.listdir(filepath): # 調用創建壓縮文件方法 createzipfile(str(item))

代碼解釋:通過 os.listdir () 方法獲取到要壓縮的目錄下所有的文件夾,即獲取到 1,2,3,4…,在遍曆中調用 createzipfile () 方法,将文件夾名稱傳入。在 createzipfile () 方法中,使用 zipfile.ZipFile 創建壓縮文件,在向壓縮文件寫入内容時,通過 os.walk () 方法對當前月的目錄進行遍曆,嵌套 for…in 循環中,将文件寫入到壓縮文件。代碼執行完成後,創建好的壓縮文件如下圖所示。

自動壓縮文件夾的軟件python(辦公自動化教程文件壓縮與解壓縮)5

自動壓縮文件夾的軟件python(辦公自動化教程文件壓縮與解壓縮)6

4. 小結

本節課程我們主要學習了 zipfile 模塊的使用。本節課程的重點如下:

  • 了解 zipfile 模塊作用及使用步驟;
  • 掌握 zipfile 模塊中壓縮與解壓縮操作的使用方法;

自動壓縮文件夾的軟件python(辦公自動化教程文件壓縮與解壓縮)7

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved