12.4.1 ZipFile オブジェクト

クラス ZipFile( file[, mode[, compression[, allowZip64]]])
ZIP ファイルを開きます。file はファイルへのパス名 (文字列) またはファイルのように振舞うオブジェクトのどちらでもかまいません。 mode パラメタは、既存のファイルを読むためには 'r'、 既存のファイルを切り詰めたり新しいファイルに書き込むためには 'w'、 追記を行うためには 'a' でなくてはなりません。 mode'a'file が既存の ZIP ファイルを 参照している場合、追加するファイルは既存のファイル中の ZIP アーカイブ に追加されます。file が ZIP を参照していない場合、新しい ZIP アーカイブが生成され、既存のファイルの末尾に追加されます。このことは、 ある ZIP ファイルを他のファイル、例えば python.exe

cat myzip.zip >> python.exe

として追加することができ、少なくとも WinZip がこのような ファイルを読めることを意味します。 compression はアーカイブを書き出すときの ZIP 圧縮法で、 ZIP_STORED または ZIP_DEFLATED でなくては なりません。不正な値を指定すると RuntimeError が送出 されます。また、ZIP_DEFLATED 定数が指定されているのに zlib を利用することができない場合、 RuntimeError が送出されます。デフォルト値は ZIP_STORED です。 allowZip64True ならば 2GB より大きな ZIP ファイルの作成時に ZIP64 拡張を使用します。これが False ならば、zipfile モジュールは ZIP64 拡張が必要になる場面で例外を送出します。 ZIP64 拡張はデフォルトでは無効にされていますが、これは Unixzip  および unzip (InfoZIP ユーティリティ) コマンドがこの拡張をサポートしていないからです。

close( )
アーカイブファイルを閉じます。close() は プログラムを終了する前に必ず呼び出さなければなりません。 さもないとアーカイブ上の重要なレコードが書き込まれません。

getinfo( name)
アーカイブメンバ name に関する情報を持つ ZipInfo オブジェクトを返します。

infolist( )
アーカイブに含まれる各メンバの ZipInfo オブジェクトからなる リストを返します。既存のアーカイブファイルを開いている場合、 リストの順番は実際の ZIP ファイル中のメンバの順番と同じになります。

namelist( )
アーカイブメンバの名前のリストを返します。

printdir( )
アーカイブの目次を sys.stdout に出力します。

read( name)
アーカイブ中のファイルの内容をバイト列にして返します。アーカイブは 読み込みまたは追記モードで開かれていなくてはなりません。

testzip( )
アーカイブ中の全てのファイルを読み、CRC チェックサムとヘッダが正常か調べます。 最初に見つかった不正なファイルの名前を返します。 不正なファイルがなければ None を返します。

write( filename[, arcname[, compress_type]])

filename に指定したファイル名を持つファイルを、アーカイブ名を arcname (デフォルトでは filename と同じですが ドライブレターと先頭にあるパスセパレータは取り除かれます) にしてアーカイブに収録します。 compress_type を指定した場合、コンストラクタを使って新たなアーカイブエントリ を生成した際に使ったcompression パラメタを上書きします。アーカイブのモードは 'w' または 'a' でなくてはなりません。

注意: ZIP ファイル中のファイル名に関する公式なエンコーディング方式はありません。 もしユニコードのファイル名が付けられているならば、それを write() に渡す前に望ましいエンコーディングでバイト列に変換しておいてください。 WinZip は全てのファイル名を DOS Latin としても知られる CP437 で解釈します。

注意: アーカイブ名はアーカイブルートに対する相対的なものでなければなりません。 言い換えると、アーカイブ名はパスセパレータで始まってはいけません。

writestr( zinfo_or_arcname, bytes)
文字列 bytesをアーカイブに書き込みます。zinfo_or_arcname はアーカイブ中で指定するファイル名か、またはZipInfo インスタンス を指定します。zinfo_or_arcnameZipInfo インスタンスを指定 する場合、zinfoインスタンスには少なくともファイル名、日付および時刻 を指定しなければなりません。ファイル名を指定した場合、日付と時刻には現在の 日付と時間が設定されます。アーカイブはモード 'w' または 'a' で開かれていなければなりません。

以下のデータ属性も利用することができます。

debug
使用するデバッグ出力レベル。この属性は 0 (デフォルト、何も出力しない) から 3 (最も多くデバッグ情報を 出力する) までの値に設定することができます。デバッグ情報は sys.stdout に出力されます。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。