zip圧縮 | Python-izm

zip圧縮

Pythonの標準ライブラリでzip圧縮することができます。
※ここではデータ圧縮についてのzipを説明しています。複数の反復可能オブジェクトを同時に処理するzip関数、zip_longest関数はリンク先を参照してください。

zipfile

まずは圧縮対象のファイルを用意します。空のファイルでなければどのようなものでも構いませんので、下記ファイル名にて3つのファイルを作業ディレクトリに用意してください。

  • python.py
  • python.txt
  • python.csv

zip圧縮を行う例は次の通りです。

import zipfile

zipFile = zipfile.ZipFile('./compress_1.zip', 'w', zipfile.ZIP_STORED)
zipFile.write('./python.py')
zipFile.write('./python.txt')
zipFile.write('./python.csv')
zipFile.close()

zipFile = zipfile.ZipFile('./compress_2.zip', 'w', zipfile.ZIP_DEFLATED)
zipFile.write('./python.py')
zipFile.write('./python.txt')
zipFile.write('./python.csv')
zipFile.close()

Pythonのzip圧縮には複数のモードがあります。3行目で指定されているZIP_STOREDは複数のファイルをまとめるのみで、ファイルサイズ自体の圧縮は行いません。9行目のZIP_DEFLATEDではファイルサイズも圧縮されます。

import zipfile

zipFile = zipfile.ZipFile('./compress_1.zip', 'w', zipfile.ZIP_STORED)
zipFile.write('./python.py')
zipFile.write('./python.txt')
zipFile.write('./python.csv')
zipFile.close()

zipFile = zipfile.ZipFile('./compress_2.zip', 'w', zipfile.ZIP_DEFLATED)
zipFile.write('./python.py')
zipFile.write('./python.txt')
zipFile.write('./python.csv')
zipFile.close()

下記ハイライト部分で圧縮対象ファイルの追加を行っています。追加後はZipFileインスタンスをクローズして終了となります。出力されたファイルのサイズを見ると、モードの差が良く分かると思いますので確認してみてください。

import zipfile

zipFile = zipfile.ZipFile('./compress_1.zip', 'w', zipfile.ZIP_STORED)
zipFile.write('./python.py')
zipFile.write('./python.txt')
zipFile.write('./python.csv')
zipFile.close()

zipFile = zipfile.ZipFile('./compress_2.zip', 'w', zipfile.ZIP_DEFLATED)
zipFile.write('./python.py')
zipFile.write('./python.txt')
zipFile.write('./python.csv')
zipFile.close()