Python BZ2 Compressor语言 - compress()不返回任何内容



我正在尝试使用python的bz2compressor类压缩数据流。

文档说bz2compressor.compress()应该返回压缩数据块"只要可能",但我没有得到任何

我得到所有我的压缩数据时,我flush()(我已经尝试与文件2GB+)仍然没有。

是否有一种方法可以设置任何内部缓冲区限制,当它应该返回数据给我。

谢谢!

我得到我所有的压缩数据时,我刷新()(我已经尝试与文件2GB+)仍然没有。

使用压缩器有一个技巧。

我敢打赌你的2GB+文件不是很随机的。随机数据不能很好地压缩。有序数据压缩到非常小的大小。

例如

>>> import bz2
>>> c=bz2.BZ2Compressor()
>>> import string
>>> data = string.printable*1024
>>> len(data)
102400
>>> c.compress(data)
''
>>> result= c.flush()
>>> len(result)
361

提供的数据有一个模式,这使得它可以很好地压缩。

你需要随机数据

>>> import random
>>> c=bz2.BZ2Compressor()
>>> size= 0
>>> result= ''
>>> while result == '':
...     data = ''.join( random.choice(string.printable) for i in xrange(1024*8) )
...     size += len(data)
...     result= c.compress(data)... 
>>> len(result)
754809
>>> size
901120

当我使用真正随机的数据时,我得到块

相关内容

  • 没有找到相关文章

最新更新