gzip模塊能夠直接壓縮和解壓縮bytes-like類型的數據,同時也能實現對應格式文件的壓縮與解壓縮
一、數據壓縮與解壓縮
-
壓縮
-
gzip.compress(data)
- data:需要壓縮的bytes-like類型數據
- compresslevel參數:可選,用數字0-9表示壓縮級別,默認最高壓縮級別9,0表示不壓縮
-
-
解壓縮
-
gzip.decompress(data)
-
-
示例:
import gzip test_data = b'gzip test data' gzip_data = gzip.compress(test_data) # 壓縮數據 ungz_data = gzip.decompress(gzip_data) #解壓縮數據 print(gzip_data) #輸出b'\x1f\x8b\x08\x00\xddOa`\x02\xffK\xaf\xca,P(I-.QHI,I\x04\x00*\xfb\x85\x89\x0e\x00\x00\x00' print(ungz_data) #輸出b'gzip test data',和test_data一致
二、文件壓縮與解壓縮
-
gzip.open( filename, mode="rb")
- 壓縮文件打開后,擁有普通文件對象一樣的方法,如read、readline、readlines、write、writelines等。
- compresslevel參數:可選
- 讀取內容,可以獲得解壓縮后的數據
- 寫入內容,能夠完成對數據的壓縮
-
gzip.GzipFile()
- 初始化對象的方法__init__:(self, filename=None, mode=None,compresslevel=_COMPRESS_LEVEL_BEST, fileobj=None, mtime=None)
- 用法與gzip.open()類似,可傳入文件名或文件對象
-
示例:
#coding=utf-8 import gzip def gz(filename): '''壓縮文件''' gz_filename = filename + '.tgz' #壓縮后文件名 f_ungz = open(filename,'rb') # 打開未壓縮文件對象 f_gz = gzip.open(gz_filename,'wb') # 使用open函數創建壓縮文件對象 # f_gz = gzip.GzipFile(gz_filename,'wb') 使用GzipFile類創建壓縮文件對象 f_gz.writelines(f_ungz) #寫入壓縮內容 f_ungz.close() f_gz.close() def ungz(gz_filename): '''解壓縮文件''' ungz_filename = gz_filename.replace('.tgz','').replace('.tar.gz','')# 解壓縮后文件名 f_gz = gzip.GzipFile(gz_filename)#使用GzipFile類創建壓縮文件對象 # f_gz = gzip.open(gz_filename) 使用open函數打開壓縮文件對象 f_ungz = open(ungz_filename,'wb') #新建未壓縮文件對象 f_ungz.writelines(f_gz) #寫入解壓縮后的文件內容 f_ungz.close() f_gz.close()