##
7.18.1 ZipFile オブジェクト

class `ZipFile`( | file[, mode[, compression]])

  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` です。

`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'` でなくてはなりません。

`writestr`( | zinfo_or_arcname, bytes)

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

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

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