1
我想壓縮數據流使用pythons bz2compressor類。Python BZ2壓縮 - 壓縮()不返回任何東西
文檔說bz2compressor.compress()
應該返回壓縮數據的塊「只要有可能」,但我沒有得到任何
我讓我所有的壓縮數據時,我flush()
(我曾嘗試與文件2GB +)仍然一無所獲。
有沒有一種方法可以設置任何內部緩衝區限制,以便它能夠返回我的數據。
謝謝!
我想壓縮數據流使用pythons bz2compressor類。Python BZ2壓縮 - 壓縮()不返回任何東西
文檔說bz2compressor.compress()
應該返回壓縮數據的塊「只要有可能」,但我沒有得到任何
我讓我所有的壓縮數據時,我flush()
(我曾嘗試與文件2GB +)仍然一無所獲。
有沒有一種方法可以設置任何內部緩衝區限制,以便它能夠返回我的數據。
謝謝!
當我flush()(我曾嘗試使用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
當我使用真正的隨機數據時,我得到塊。
「當我flush()(我曾嘗試使用2GB +文件)時,我得到了所有壓縮數據。」?這是什麼意思?你有沖洗的數據嗎?如果是這樣,那麼你的問題是什麼?你想知道爲什麼它似乎沒有實際返回塊? –
嗨,是的,我想從bz2compressor.compress()(文檔說這個函數應該返回卡盤)的小塊。 –
它不是*必需*返回塊。看起來,實施並不需要。看起來你有辦法,在你的計算機內存太多內存。 –