Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python zipファイルの圧縮と解凍

Python標準ライブラリのzipfileモジュールを使用すると、ファイルをZIP形式で圧縮、解凍することができます。zipfileは、標準ライブラリなので追加のインストールは不要です。
docs.python.org

  1. ファイルを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ファイルに書き込むアーカイブ名を指定します。第二引数が省略された場合には、第一引数のファイル名がそのまま使われます。第二引数には、ディレクトリ構造を指定することも可能です。

  1. ZIPファイルに解凍する
import zipfile
with zipfile.ZipFile('test.zip') as zr:
    zr.extractall('testdir')

ZIPファイルを解凍する場合は、ZipFileオブジェクトを、コンストラクタの第一引数にZIPファイルのパス、第二引数に'r'を指定します。'r'はデフォルト値なので省略可能です。

ZipFileオブジェクトのextractall()メソッドを呼び出すことで、ZIPファイルの中身がすべて解凍(展開)されます。第一引数に展開先のディレクトリのパスを指定します。省略するとカレントディレクトリに解凍されます。

追記モードやパスワードの設定などについては、また機会があれば。
今日はここまで。