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能有一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。