python中zlib模块是用来压缩或者解压缩数据,以便保存和传输。它是其他压缩工具的基础。下面来一起看看python用模块zlib压缩与解压字符串和文件的方法。话不多说,直接来看示例代码。
例子1:压缩与解压字符串
1
2
3
4
5
6
7
8
|
import zlib message = 'abcd1234' compressed = zlib.compress(message) decompressed = zlib.decompress(compressed) print 'original:' , repr (message) print 'compressed:' , repr (compressed) print 'decompressed:' , repr (decompressed) |
结果
1
2
3
|
original: 'abcd1234' compressed: 'x\x9cKLJN1426\x01\x00\x0b\xf8\x02U' decompressed: 'abcd1234' |
例子2:压缩与解压文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import zlib 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()) if __name__ = = "__main__" : compress( 'in.txt' , 'out.txt' ) decompress( 'out.txt' , 'out_decompress.txt' ) |
结果
生成文件
1
|
out_decompress.txt out.txt |
问题——处理对象过大异常
1
2
3
4
5
6
7
8
9
10
|
>>> import zlib >>> a = '123' >>> b = zlib.compress(a) >>> b 'x\x9c342\x06\x00\x01-\x00\x97' >>> a = 'a' * 1024 * 1024 * 1024 * 10 >>> b = zlib.compress(a) Traceback (most recent call last): File "<stdin>" , line 1 , in <module> OverflowError: size does not fit in an int |
总结
以上就是关于python模块zlib压缩与解压的全部内容,希望本文的内容对大家学习或者使用python能有一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。