logo
Published on

ファイルを書き出さずにzipで圧縮する方法

Authors

概要

  • ファイルを書き出さずにメモリ上で圧縮する

Notes

  • zipfile と io を使用して、メモリ上でファイルを圧縮し、バイナリデータとして出力する。
import io
import zipfile

zip_stream = io.BytesIO()

# zip_stream に zip 圧縮したデータを出力
with zipfile.ZipFile(zip_stream, 'w', compression=zipfile.ZIP_DEFLATED) as new_zip:
    # 'hogehoge'をfoo.csvというファイル名でZIPファイルに追加
    new_zip.writestr(f"foo.csv", 'hogehoge')

# バイナリデータとして取得できる
# POSTするときのデータとして使用できる
print(new_zip.getvalue())