python中使用zlib對文件的壓縮和解壓

#coding: utf-8

import zlib

#壓縮

def compressor(infile, dst, level=6):

    infile = open(infile, ''rb'')

    dst = open(dst, ''wb'')

    compress = zlib.compressobj(level)

    data = infile.read(128)

    while data:

        dst.write(compress.compress(data))

        data = infile.read(128)

        dst.write(compress.flush())

        infile.close()

    dst.close()

#解壓

def decompressor(infile, dst):

    infile = open(infile, ''rb'')

    dst = open(dst, ''wb'')

    decompress = zlib.decompressobj()

    data = infile.read(128)

    while data:

        dst.write(decompress.decompress(data))

        data = infile.read(128)

        dst.write(decompress.flush()) 

        infile.close()

    dst.close()

if __name__ == ''__main__'':

    compressor("test.txt", "test_zlib")

    decompressor("test_zlib", "test_zlib.txt")

zlib的一些函數:

  1. zlib.adler32(s [,crc]) 返回字符串的Adler32校驗碼。參數''crc''用于增量校驗。Adler32校驗比普通CRC32校驗快。Adler32校驗只能用于檢測數據是否損壞,而不用于加密。

  2. zlib.compress(s [,level]) 壓縮字符串。參數''level''指定壓縮的等級,范圍從1至9,默認值為6。

  3. zlib.crc32(s [,crc]) 返回字符串的CRC32校驗碼。參數''crc''用于增量校驗。CRC32校驗只能用于檢測數據是否損壞,而不用于加密。

  4. zlib.decompress(s [,winsize [,buffsize]]) 解壓字符串。參數''winsize''指定窗口緩沖區的大小,默認是15。參數''buffsize''指定解壓緩沖區的大小,默認是16384。

  5. zlib.compressobj([level]) 創建壓縮對象。該壓縮對象可以增量逐步壓縮字符串塊,同時保留先前壓縮的內部狀態參數。參數''level''指定壓縮的等級,范圍從1至9,默認值為6。

  6. zlib.decompressobj([winsize]) 創建解壓對象。該解壓對象可以增量逐步解壓字符串塊,同時保留先前解壓的內部狀態參數。參數''winsize''指定窗口緩沖區的大小,默認是15。

zlib的一些方法和屬性:

  1. zlib.compressobj.compress(s) 添加需要壓縮的數據。如果數據足夠則返回相應的壓縮數據,否則返回空字符串。

  2. zlib.compressobj.flush([mode]) 生成完整的壓縮數據。參數''mode''默認為Z_FINISH,即該壓縮對象不再使用,這時應該''del''它。如果指定Z_SYNC_FLUSH或Z_FULL_FLUSH,壓縮對象仍然可以使用,但原先的壓縮數據將不再保留。

  3. zlib.decompressobj.unused_data 就像上面那個例子顯示的那樣,zlib.decompressobj.unused_data是一個屬性而不是方法,其中包含任何還未能處理的解壓數據。

  4. zlib.decompressobj.decompress(s) 添加解壓縮數據。返回解壓出的數據,未處理的保留在zlib.decompressobj.unused_data

  5. zlib.decompressobj.flush() 返回全部解壓數據。如果解壓對象不再使用,您應該del它。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容