Python模組zipfile原理及使用方法詳解

2022-10-04 06:18:10 字數 1625 閱讀 1211

zipfile是python裡用來做zip格式編碼的壓縮和解壓縮的,由於是很常見的zip格式,所以這個模組使用頻率也是比較高的

zipfile裡有兩個非常重要的class, 分別是zipfile和zipinfo, 在絕大多數的情況下,我們只需要使用這兩個class就可以了。

zipfile是主要的類,用來建立和讀取zip檔案

zipinfo是儲存的程式設計客棧zip檔案的每個檔案的資訊的。

比如要讀取乙個zipfile,這裡假設filename是乙個檔案的路徑:

import zipfile

z = zipfile.zipfile(filename, 'r') # 這裡的第二個引數用r表示是讀取zip檔案,w是建立乙個zip檔案

for f in z.namelist():

print f

上面的**是讀取乙個zip壓縮包裡所有檔案的名字。z.namelist() 會返回壓縮包內所有檔名的列表。

再看看下面乙個:

import zipfile

z = zipfile.zipfile(filename, 'r')

for i in z.infolist():

print i.file_size, i.header_offset

這裡使用了z.infolist(), 它返回的就是壓縮包內所有檔案的資訊,就是乙個zipinfo的列表。乙個zopinfo物件中包含了壓縮包內乙個檔案的資訊,其中比較常用的是 filename, file_size, header_offset, 分別為檔名,檔案大小,檔案資料在壓縮包中的偏移。其實之前的z.namelist()就是讀取的zopinfo中的filename,組成乙個 list返回的。

從壓縮包裡解壓縮出乙個檔案的方法是使用zipfile的read方法:

import zipfile

z = zipfile.zipfile(filename, 'r')

print z.read(z.namelist()[0])

這樣就讀取出z.namelist()中的第乙個檔案,並程式設計客棧且輸出到螢幕,當然也可以把它儲存到檔案。

下面是建立zip壓縮包的方法:

與讀取的方法其實很類似的:

import zipfi os

z = zipfile.zipfile(filename, 'w') # 注意這裡的第二個引數是w,這裡的filename是壓縮包的名字

#假設要把乙個叫testdir中的檔案全部新增到壓縮包裡(這裡只新增一級子目錄中的檔案):

if os.path.isdir(testdir):

for d in os.listdir(testdir):

z.write(testdir+os.sep+d)

# close() 是必須呼叫的!

z.close()

上面的**非常的簡單。

想想還有www.cppcns.com乙個問題,如果我把乙個test/111.txt 新增到壓縮包裡之後我希望在包裡它放到test22/111.txt怎麼辦呢?

其實這個就是zipfile的write方法中第二個引數的作用了。只需要這樣呼叫:z.write("test/111.txt", "test22/111.txt")

本文標題: python模組zipfile原理及使用方法詳解

本文位址:

Python基礎 ZipFile模組

zipfile和zipinfo,在絕大多數的情況下,我們只需要使用這兩個class就可以了。zipfile是主要的類,用來建立和讀取zip檔案。而zipinfo是儲存的zip檔案的每個檔案的資訊的。import zipfile z zipfile.zipfile filename,r for i i...

python模組 zipfile檔案壓縮

zipfile模組是python中乙個處理壓縮檔案的模組,解決了不少我們平常需要處理壓縮檔案的需求 本文主要談談zipfile幾個常用的用法。首先我在windows作業系統中建立如下的檔案目錄 一 讀取壓縮檔案 import zipfile import os 壓縮檔案路徑 zip file pat...

Python中zipfile模組最最最最簡單的例子

用python寫的乙個簡單的壓縮檔案處理 寫得要被人打的節奏 bug多多 encoding utf 8 import zipfile import os defmenu print 1 列出所有壓縮檔案 2 解壓指定檔案 3 加入壓縮檔案 4 退出 defunzip zf zf.printdir z...