低圧縮レベルに無効なデータ・ストリームを生成します。PythonのBZ2シーケンシャルコンプレッサーは、私は「行」という名前のリスト内の文字列のシリーズを持っているし、次のように私はそれらを圧縮
import bz2
compressor = bz2.BZ2Compressor(compressionLevel)
for l in lines:
compressor.compress(l)
compressedData = compressor.flush()
decompressedData = bz2.decompress(compressedData)
がCompressionLevelは、8または9に設定されている場合、これはうまく動作します。 1から7までの任意の数であれば、最終行はIOError:無効なデータストリームで失敗します。シーケンシャルデコンプレッサを使用している場合も同じことが起こります。私は1つの長い文字列に文字列を結合し、ワンショットコンプレッサー機能を使用する場合は、それが正常に動作:これは次のようになり、それが低い圧縮レベルで動作させるためにどのように、なぜ
import bz2
compressedData = bz2.compress("\n".join(lines))
decompressedData = bz2.decompress(compressedData)
# Works perfectly
あなたは知っていますか?
ああ、わかります。私は、compress関数がflush()ですべてではなく部分的な結果を返すという事実を見逃していました。 8または9のcompressionLevelが、部分的な結果が準備ができているということに決して到達しないことに興味があります。この違いは、別のドキュメントセットでテストしても表示されないことさえあります。 – thornate