Python標準ライブラリのzipfileモジュールを使用すると、ファイルをZIP形式で圧縮、解凍することができます。zipfileは、標準ライブラリなので追加のインストールは不要です。
docs.python.org
- ファイルをZIPファイルに圧縮
ZipFileオブジェクトを書き込みモードで作成し、write()メソッドで圧縮するファイルを追加することで、zip形式のファイルを作成することができます。
import zipfile with zipfile.ZipFile('test.zip','w', zipfile.ZIP_DEFLATED) as zw: zw.write( 'test.txt') zw.write( 'zipdir/test2.txt', 'arcdir/test2.txt')
これを実行すると、test.zipファイルが作成されます。
以下、簡単な説明です。
ZipFileオブジェクトのコンストラクタの第一引数には、作成するzipファイルパスを指定し、第二引数には、新規作成時には'w'を指定します。'a'を指定して既存のzipファイルに追加することも可能ですが、今回は省略します。第三引数はzipファイルの圧縮形式です。通常のzipファイル作成時には、zipfile.ZIP_DEFLATEDを指定します。その他の圧縮方式についてはドキュメントを参照して下さい。
write()メソッドでは、第一引数にファイル名を、第二引数には、ZIPファイルに書き込むアーカイブ名を指定します。第二引数が省略された場合には、第一引数のファイル名がそのまま使われます。第二引数には、ディレクトリ構造を指定することも可能です。
- ZIPファイルに解凍する
import zipfile with zipfile.ZipFile('test.zip') as zr: zr.extractall('testdir')
ZIPファイルを解凍する場合は、ZipFileオブジェクトを、コンストラクタの第一引数にZIPファイルのパス、第二引数に'r'を指定します。'r'はデフォルト値なので省略可能です。
ZipFileオブジェクトのextractall()メソッドを呼び出すことで、ZIPファイルの中身がすべて解凍(展開)されます。第一引数に展開先のディレクトリのパスを指定します。省略するとカレントディレクトリに解凍されます。
追記モードやパスワードの設定などについては、また機会があれば。
今日はここまで。