A:如何使用zlib模塊來進行壓縮解壓了?
Q:
1.使用zlib.compress可以壓縮字符串。使用zlib.decompress可以解壓字符串。
壓縮解壓字符串示范代碼:
import zlib
message = 'witch which has which witches wrist watch'
compressed = zlib.compress(message)
decompressed = zlib.decompress(compressed)
print 'original:', repr(message)
print 'compressed:', repr(compressed)
print 'decompressed:', repr(decompressed)
輸出
original: 'witch which has which witches wrist watch'
compressed: 'x\x9c+\xcf,I\xceP(\xcf\xc8\x04\x92\x19\x89\xc5PV9H4\x15\xc8+\xca,.Q(O\x04\xf2\x00D?\x0f\x89'
decompressed: 'witch which has which witches wrist watch'
2.使用zlib.compressobj和zlib.decompressobj比較適合用于對文件進行壓縮解壓。
以下定義的兩個函數可以做為使用zlib.compressobj和zlib.decompressobj對文件進行壓縮解壓的例子:
def compress(infile, dst, level=9):
??? infile = open(infile, 'rb')
??? dst = open(dst, 'wb')
??? compress = zlib.compressobj(level)
??? data = infile.read(1024)
??? while data:
??????? dst.write(compress.compress(data))
??????? data = infile.read(1024)
??? dst.write(compress.flush())
def decompress(infile, dst):
??? infile = open(infile, 'rb')
??? dst = open(dst, 'wb')
??? decompress = zlib.decompressobj()
??? data = infile.read(1024)
??? while data:
??????? dst.write(decompress.decompress(data))
??????? data = infile.read(1024)
??? dst.write(decompress.flush())