Python でbz2
and/orパッケージを使用しようとしています。lzma
データベース ダンプを csv 形式で圧縮してファイルに保存しようとしていzip
ます。両方のパッケージでワンショット圧縮で動作するようになりました。
コードは次のようになります。
with ZipFile('something.zip', 'w') as zf:
content = bz2.compress(bytes(csv_string, 'UTF-8')) # also with lzma
zf.writestr(
'something.csv' + '.bz2',
content,
compress_type=ZIP_DEFLATED
)
増分圧縮を使用しようとすると、.zip ファイルが作成され、抽出しようとすると、いくつかのアーカイブ ファイルが再帰的に提供され続けます。
コードは次のようになります。
with ZipFile('something.zip', 'w') as zf:
compressor = bz2.BZ2Compressor()
content = compressor.compress(bytes(csv_string, 'UTF-8')) # also with lzma
zf.writestr(
'something.csv' + '.bz2',
content,
compress_type=ZIP_DEFLATED
)
compressor.flush()
ドキュメントを調べ、圧縮技術に関する情報も探しましたが、ワンショット圧縮とインクリメンタル圧縮とは何かについての包括的な情報はないようです。