1. 程式人生 > >Python中的zipfile模組使用例項

Python中的zipfile模組使用例項

1 壓縮檔案的基本資訊

  • 匯入模組
import zipfile
  • 載入壓縮檔案,建立ZipFile 物件
    class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
    1.引數file表示檔案的路徑或類檔案物件(file-like object);
    2.引數mode指示開啟zip檔案的模式,預設值為'r',表示讀已經存在的zip檔案,也可以為'w'或'a',w'表示新建一個zip文件或覆蓋一個已經存在的zip文件,'a'表示將資料附加到一個現存的zip文件中;
    3.引數compression表示在寫zip文件時使用的壓縮方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip檔案大小超過2G,應該將allowZip64設定為True。
file_dir = 'D:/text.zip'
zipFile = zipfile.ZipFile(file_dir)
  • ZipFile.infolist()
    獲取zip文件內所有檔案的資訊,返回一個zipfile.ZipInfo的列表
print(zipFile.infolist())

輸出

[<ZipInfo filename='text.txt' compress_type=deflate external_attr=0x20 file_size=13 compress_size=15>]
  • ZipFile.namelist()
    獲取zip文件內所有檔案的名稱列表
print(zipFile.namelist())

輸出

['text.txt']
  • ZipFile.printdir()
    將zip文件內的資訊列印到控制檯上
print(zipFile.printdir())

輸出

File Name                                             Modified             Size
text.txt                                       2018-06-06 11:04:26           13
None

以上完整程式碼

import zipfile
# 載入壓縮檔案,建立ZipFile物件
# class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
# 引數file表示檔案的路徑或類檔案物件(file-like object)
# 引數mode指示開啟zip檔案的模式,預設值為'r',表示讀已經存在的zip檔案,也可以為'w'或'a',
# 'w'表示新建一個zip文件或覆蓋一個已經存在的zip文件,'a'表示將資料附加到一個現存的zip文件中
# 引數compression表示在寫zip文件時使用的壓縮方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。
# 如果要操作的zip檔案大小超過2G,應該將allowZip64設定為True。
file_dir = 'D:/text.zip'
zipFile = zipfile.ZipFile(file_dir)

# 01 ZipFile.infolist() 獲取zip文件內所有檔案的資訊,返回一個zipfile.ZipInfo的列表
print(zipFile.infolist())
# 02 ZipFile.namelist() 獲取zip文件內所有檔案的名稱列表
print(zipFile.namelist())
# 03 ZipFile.printdir() 將zip文件內的資訊列印到控制檯上
print(zipFile.printdir())

2 解壓檔案

  • ZipFile.extract(member[, path[, pwd]])
    將zip文件內的指定檔案解壓到當前目錄。引數member指定要解壓的檔名稱或對應的ZipInfo物件;引數path指定了解析檔案儲存的資料夾;引數pwd為解壓密碼。下面一個例子將儲存在程式根目錄下的text.zip內的所有檔案解壓到D:/Work目錄:
import zipfile
import os
zipFile = zipfile.ZipFile(file_dir)
for file in zipFile.namelist():
    zipFile.extract(file, 'd:/Work')
zipFile.close()

  • ZipFile.extractall([path[, members[, pwd]]])
    解壓zip文件中的所有檔案到當前目錄。引數members的預設值為zip文件內的所有檔名稱列表,也可以自己設定,選擇要解壓的檔名稱。
zipFile.extractall('d:/Work') # 和上面效果一樣