Python模塊zipfile原理及使用方法詳解
zipfile是python里用來做zip格式編碼的壓縮和解壓縮的,由于是很常見的zip格式,所以這個模塊使用頻率也是比較高的
zipfile里有兩個非常重要的class, 分別是ZipFile和ZipInfo, 在絕大多數(shù)的情況下,我們只需要使用這兩個class就可以了。
ZipFile是主要的類,用來創(chuàng)建和讀取zip文件
ZipInfo是存儲的zip文件的每個文件的信息的。
比如要讀取一個zipfile,這里假設(shè)filename是一個文件的路徑:
import zipfilez = zipfile.ZipFile(filename, ’r’) # 這里的第二個參數(shù)用r表示是讀取zip文件,w是創(chuàng)建一個zip文件for f in z.namelist(): print f
上面的代碼是讀取一個zip壓縮包里所有文件的名字。z.namelist() 會返回壓縮包內(nèi)所有文件名的列表。
再看看下面一個:
import zipfilez = zipfile.ZipFile(filename, ’r’)for i in z.infolist(): print i.file_size, i.header_offset
這里使用了z.infolist(), 它返回的就是壓縮包內(nèi)所有文件的信息,就是一個ZipInfo的列表。一個ZopInfo對象中包含了壓縮包內(nèi)一個文件的信息,其中比較常用的是 filename, file_size, header_offset, 分別為文件名,文件大小,文件數(shù)據(jù)在壓縮包中的偏移。其實(shí)之前的z.namelist()就是讀取的ZopInfo中的filename,組成一個 list返回的。
從壓縮包里解壓縮出一個文件的方法是使用ZipFile的read方法:
import zipfilez = zipfile.ZipFile(filename, ’r’)print z.read(z.namelist()[0])
這樣就讀取出z.namelist()中的第一個文件,并且輸出到屏幕,當(dāng)然也可以把它存儲到文件。
下面是創(chuàng)建zip壓縮包的方法:
與讀取的方法其實(shí)很類似的:
import zipfile, osz = zipfile.ZipFile(filename, ’w’) # 注意這里的第二個參數(shù)是w,這里的filename是壓縮包的名字#假設(shè)要把一個叫testdir中的文件全部添加到壓縮包里(這里只添加一級子目錄中的文件):if os.path.isdir(testdir): for d in os.listdir(testdir): z.write(testdir+os.sep+d)# close() 是必須調(diào)用的!z.close()
上面的代碼非常的簡單。
想想還有一個問題,如果我把一個test/111.txt 添加到壓縮包里之后我希望在包里它放到test22/111.txt怎么辦呢?
其實(shí)這個就是ZipFile的write方法中第二個參數(shù)的作用了。只需要這樣調(diào)用:z.write('test/111.txt', 'test22/111.txt')
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. CentOS郵箱服務(wù)器搭建系列——SMTP服務(wù)器的構(gòu)建( Postfix )2. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對象3. ASP新手必備的基礎(chǔ)知識4. Docker 啟動Redis 并設(shè)置密碼的操作5. asp文件用什么軟件編輯6. 通過IEAD+Maven快速搭建SSM項目的過程(Spring + Spring MVC + Mybatis)7. JS中6個對象數(shù)組去重的方法8. vue+element開發(fā)一個谷歌插件的全過程9. 利用CSS制作3D動畫10. Vue axios獲取token臨時令牌封裝案例

網(wǎng)公網(wǎng)安備