1. 程式人生 > >python2.x zipfile模組學習

python2.x zipfile模組學習

zipfile模組壓縮檔案
    將多個檔案打包成一個檔案。這個檔案叫做“歸檔檔案”, 利用zipfile模組中的函式,Python程式可以建立和開啟或壓縮ZIP檔案
    1. 讀取ZIP檔案,首先必須建立一個ZipFile物件,通過呼叫zipfile.ZipFile()函式,向它傳入一個字串,表示.zip檔案的檔名
    zipfile是Python模組的名稱,ZipFile是函式的名稱  

import zipfile
import os

print 'current dir: %s' % os.getcwd()
os.chdir('D:\\')
print 'after change dir: %s' % os.getcwd()

zip_file = zipfile.ZipFile('openApi.zip')
print 'all file: %s' % zip_file.namelist()

name_list = zip_file.namelist()

for name in name_list:
    name_info = zip_file.getinfo(name)
    print '%s original file size:%d, compressed file size:%d' % (name, name_info.file_size, name_info.compress_size)

    ZipFile物件有一個namelist()方法,返回ZIP檔案中包含的所有檔案和資料夾的字串的列表,這些字串可以傳遞給ZipFile物件的getinfo()方法,返回一個
    關於特定檔案的ZipInfo物件。ZipFile物件有自己的屬性,如:表示位元組數的file_size(原來檔案大小)和compress_size(壓縮後文件大小)
    ZipFile物件表示整個歸檔檔案,而ZipInfo物件則儲存該歸檔檔案中每個檔案的有用資訊。

    2. 從ZIP檔案中解壓縮
    ZipFile物件的extractall()方法從ZIP檔案中解壓縮所有檔案和資料夾,放到當前工作目錄中。

import zipfile, os
os.chdir('C:\\')
example_zip = zipfile.ZipFile('example.zip')
example_zip.extractall()
example_zip.close()

    example.zip的內容將被解壓縮到C:\\。 或者,你可以向extractall()傳遞一個資料夾名稱,它將檔案解壓縮到那個資料夾,而不是
    當前工作目錄。如果傳遞給extractall()方法的資料夾不存在,它會被建立。

    ZipFile物件的extract()方法從ZIP檔案中解壓縮單個檔案。傳遞給extract()的字串,必須匹配namelist()返回的字串列表中的一個。
    或者你可以向extract()傳遞第二個引數,將檔案解壓縮到指定的資料夾,而不是當前工作目錄。如果第二個引數指定的資料夾不存在,Python就會建立它。
    extract()的返回值是被壓縮後文件的絕對路徑。

    3. 建立和新增到ZIP檔案
    要建立你自己的壓縮ZIP檔案,必須以“寫模式”開啟ZipFile物件,即傳入'w'作為第二個引數,
    如果向ZipFile物件的write()方法傳入一個路徑,Python就會壓縮該路徑所指的檔案,將它加到ZIP檔案中。
    write()方法的第一個引數是一個字串,代表新增的檔名。第二個引數是“壓縮型別”引數,它告訴計算機使用怎樣的演算法來壓縮檔案。
    可以總是將這個值設定為zipfile.ZIP_DEFLATED

import zipfile, os

new_zip = zipfile.ZipFile('new.zip', 'w')
new_zip.write('spam.txt', compress_type = zipfile.ZIP_DEFLATED)
new_zip.close()

    寫模式將擦除ZIP檔案中所有原有的內容。如果只是希望將檔案新增到原有的ZIP檔案中,就要向zipfile.ZipFile()傳入 "a"作為第二個引數,以
    新增模式開啟ZIP檔案