python壓縮和解壓縮模塊之zlib的用法_第1頁(yè)
python壓縮和解壓縮模塊之zlib的用法_第2頁(yè)
python壓縮和解壓縮模塊之zlib的用法_第3頁(yè)
python壓縮和解壓縮模塊之zlib的用法_第4頁(yè)
python壓縮和解壓縮模塊之zlib的用法_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第python壓縮和解壓縮模塊之zlib的用法目錄python壓縮和解壓縮模塊之zlibpython中zlib庫(kù)用法zlib主要用于壓縮與解壓縮

python壓縮和解壓縮模塊之zlib

由于早期的zlib和Python之間不兼容,故推薦1.1.4以后的版本。導(dǎo)入zlib后可以查看版本號(hào)

importzlib

zlib.ZLIB_VERSION

'1.2.11'

zlib.ZLIB_RUNTIME_VERSION

'1.2.11'

zlib中封裝了兩對(duì)壓縮和解壓的函數(shù)

壓縮解壓compressdecompresscompressobjdecompressobj

其中compress和decompress比較簡(jiǎn)單,二者聲明為

press(data,level=-1)

zlib.decompress(data,wbits=MAX_WBITS,bufsize=DEF_BUF_SIZE)

即分別對(duì)data進(jìn)行壓縮和解壓。

其中l(wèi)evel為整數(shù),用于指定壓縮等級(jí),決定壓縮后文件的大小,取值為-1到9。

zlib中內(nèi)置了四個(gè)常量,用以表示四種情況。

壓縮模式1Z_BEST_SPEED最快速度和最低壓縮率9Z_BEST_COMPRESSION最慢速度最高壓縮率0Z_NO_COMPRESSION不壓縮-1Z_DEFAULT_COMPRESSION一般相當(dāng)于設(shè)壓縮等級(jí)為6

解壓函數(shù)中的wbits控制歷史緩沖區(qū)的大?。ɑ蚍Q(chēng)窗口大?。┮约八谕念^部和尾部格式。

默認(rèn)為MAX_WBITS,其取值范圍和含義如下

包含頭尾+8至+15必須窗口尺寸以二為底的對(duì)數(shù)。輸入必須包含zlib頭部和尾部。0必須含頭根據(jù)zlib頭部自動(dòng)確定窗口大小8至15無(wú)頭尾使用wbits絕對(duì)值作為窗口大小以二為底的對(duì)數(shù)+24至+31必須包含使用后4個(gè)比特位作為窗口大小以二為底的對(duì)數(shù)。+40至+47自動(dòng)使用后4個(gè)比特位作為窗口大小以二為底的對(duì)數(shù)

bufsize是表示緩沖區(qū)初始大小,默認(rèn)為DEF_MEM_LEVEL,由于在解壓過(guò)程中會(huì)自動(dòng)調(diào)節(jié),故不必完全精確。

例如:

x=b'abcdefghijk'*100

x0=compress(x,0)

x1=compress(x,1)

x9=compress(x,9)

print(len(x),len(x0),len(x1),len(x9))

110011113229#無(wú)壓縮時(shí)得到的數(shù)據(jù)比原始數(shù)據(jù)還大

d1=decompress(x9)#解壓縮

d1==x

True

compressobj和decompressobj分別返回一個(gè)壓縮對(duì)象和解壓對(duì)象。compressobj返回一個(gè)壓縮對(duì)象,用來(lái)壓縮內(nèi)存中難以容下的數(shù)據(jù)流,聲明如下

compressobj(level=-1,method=DEFLATED,wbits=MAX_WBITS,memLevel=DEF_MEM_LEVEL,strategy=Z_DEFAULT_STRATEGY[,zdict])

其中l(wèi)evel為壓縮級(jí)別,和前文一樣取值為-1到9;method表示壓縮算法,現(xiàn)在只支持DEFLATED;memLevel指定內(nèi)部壓縮操作時(shí)所占用內(nèi)存大小。參數(shù)取1到9,默認(rèn)DEF_MEM_LEVEL,取值越大越占內(nèi)存,但速度更快。

wbits和decompress中相似,但取值范圍更少,默認(rèn)是15(MAX_WBITS)。

參數(shù)范圍如下:

+9至+15窗口大小以二為底的對(duì)數(shù)。即這些值對(duì)應(yīng)著512至32768的窗口大小。更大的值會(huì)提供更好的壓縮,同時(shí)內(nèi)存開(kāi)銷(xiāo)也會(huì)更大。壓縮輸出會(huì)包含zlib特定格式的頭部和尾部。9至15絕對(duì)值為窗口大小以二為底的對(duì)數(shù)。壓縮輸出僅包含壓縮數(shù)據(jù),沒(méi)有頭部和尾部。+25至+31后4個(gè)比特位為窗口大小以二為底的對(duì)數(shù)。壓縮輸出包含一個(gè)基本的gzip頭部,并以校驗(yàn)和為尾部。

strategy用于調(diào)節(jié)壓縮算法,默認(rèn)即可。zdict指定預(yù)定義的壓縮字典。是一個(gè)字節(jié)序列,其中包含用戶(hù)認(rèn)為要壓縮的數(shù)據(jù)中可能頻繁出現(xiàn)的子序列。頻率高的子序列應(yīng)當(dāng)放在字典的尾部。

除了壓縮和解壓縮,zlib還提供了兩個(gè)數(shù)據(jù)校驗(yàn)的函數(shù),

函數(shù)算法zlib.adler32Adler-32校驗(yàn)zlib.crc32CRC(循環(huán)冗余)校驗(yàn)

二者均輸入數(shù)據(jù)和校驗(yàn)起始值,校驗(yàn)起始值value默認(rèn)為1。這兩個(gè)函數(shù)僅為驗(yàn)證數(shù)據(jù)的正確性,均無(wú)加密強(qiáng)度,不適合做密碼。

zlib.adler32(b'abcdefghijk')

434701411

zlib.crc32(b'abcdefghijk')

3461812127

python中zlib庫(kù)用法

zlib主要用于壓縮與解壓縮

字符串:使用press可以壓縮字符串。使用zlib.decompress可以解壓字符串。數(shù)據(jù)流:壓縮:compressobj,解壓:decompressobj

示例代碼:

importzlib

data='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'\

'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'

print(len(data))

print(data)

compressed_data=press(data.encode())#注意:這兒要以字節(jié)的形式傳入

print(len(compressed_data))

print(compressed_d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論