python模組之zipfile

來源:互聯網
上載者:User

轉載自:http://blog.csdn.net/zhaoweikid/archive/2007/05/30/1630842.aspx

這篇文章是從我的另一個blog轉過來的: http://hi.baidu.com/python23/
 
zipfile是python裡用來做zip格式編碼的壓縮和解壓縮的,由於是很常見的zip格式,所以這個模組使用頻率也是比較高的,在這裡對zipfile的使用方法做一些記錄。即方便自己也方便別人。
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 zipfile, 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()

上面的代碼非常的簡單。
想想還有一個問題,如果我把一個test/111.txt 添加到壓縮包裡之後我希望在包裡它放到test22/111.txt怎麼辦呢?
其實這個就是ZipFile的write方法中第二個參數的作用了。只需要這樣調用:z.write("test/111.txt", "test22/111.txt") 

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.