pytho****@googl*****
pytho****@googl*****
2011年 11月 21日 (月) 01:21:35 JST
Revision: 36baa78b89bb Author: Naoki INADA <inada****@klab*****> Date: Sun Nov 20 08:20:27 2011 Log: Update 2.7.2: library/zipfile http://code.google.com/p/python-doc-ja/source/detail?r=36baa78b89bb Modified: /library/zipfile.rst /library/zipfile.rst.diff ======================================= --- /library/zipfile.rst Sat Apr 16 17:12:19 2011 +++ /library/zipfile.rst Sun Nov 20 08:20:27 2011 @@ -40,6 +40,7 @@ .. class:: ZipFile + :noindex: ZIP ファイルの読み書きのためのクラスです。コンストラクタの詳細について は、 :ref:`zipfile-objects` 節) を参照してください。 @@ -64,6 +65,10 @@ *filename* が正しいマジックナンバをもつ ZIP ファイルのときに ``True`` を 返し、 そうでない場合 ``False`` を返します。 + *filename* にはファイルやファイルライクオブジェクトを渡すこともできま す。 + + .. versionchanged:: 2.7 + ファイルやファイルライクオブジェクトをサポート .. data:: ZIP_STORED @@ -97,23 +102,39 @@ パラメタは、既存のファイルを読むためには ``'r'`` 、既存のファイルを切り 詰めたり新しいファイルに書き込むためには ``'w'`` 、 追記を行うためには ``'a'`` でなくてはなりません。 *mode* が ``'a'`` で *file* が既存の ZIP ファイルを 参照している場合、追加するファイルは既存のファイル中の ZIP アーカイブに 追加されます。 *file* が ZIP を参照していない場合、新しい ZIP - アーカイブが生成され、既存のファイルの末尾に追加されます。このことは、あ る ZIP ファイルを他のファイル、例えば - :file:`python.exe` に :: - - cat myzip.zip >> python.exe - - として追加することができ、少なくとも :program:`WinZip` がこのようなファ イルを読めることを意味します。 - もし、 *mode* が ``a`` で、かつ、ファイルが存在しなかった場合、新規に作 成されます。 - *compression* はアーカイブを書き出すときの ZIP 圧縮法 で、 :const:`ZIP_STORED` または :const:`ZIP_DEFLATED` でなくては - なりません。不正な値を指定すると :exc:`RuntimeError` が送出されます。ま た、 :const:`ZIP_DEFLATED` - 定数が指定されているのに :mod:`zlib` を利用することができない場 合、 :exc:`RuntimeError` が送出されます。デフォルト値は - :const:`ZIP_STORED` です。 *allowZip64* が ``True`` ならば 2GB より大き な ZIP ファイルの作成時に - ZIP64 拡張を使用します。これが ``False`` ならば、 :mod:`zipfile` モジ ュールは ZIP64 - 拡張が必要になる場面で例外を送出します。 ZIP64 拡張はデフォルトでは無効 にされていますが、これは Unix の :program:`zip` および + アーカイブが生成され、既存のファイルの末尾に追加されます。 + このことは、ある ZIP ファイルを他のファイル(例えば :file:`python.exe`)に + 追加することを意味しています。 + + .. versionchanged:: 2.6 + *mode* が ``'a'`` でファイルが存在しない場合、ファイルが作られるよう になりました。 + + *compression* はアーカイブを書き出すときの ZIP 圧縮法 で、 :const:`ZIP_STORED` + または :const:`ZIP_DEFLATED` でなくてはなりません。 + 不正な値を指定すると :exc:`RuntimeError` が送出されます。 + また、 :const:`ZIP_DEFLATED` 定数が指定されているのに :mod:`zlib` を利用 することが + できない場合も、 :exc:`RuntimeError` が送出されます。 + デフォルト値は :const:`ZIP_STORED` です。 + *allowZip64* が ``True`` ならば 2GB より大きな ZIP ファイルの作成時に + ZIP64 拡張を使用します。これが ``False`` (デフォルト) なら ば、 :mod:`zipfile` + モジュールは ZIP64 拡張が必要になる場面で例外を送出します。 + ZIP64 拡張はデフォルトでは無効にされていますが、これは Unix の :program:`zip` および :program:`unzip` (InfoZIP ユーティリティ) コマンドがこの拡張をサポートし ていないからです。 - .. versionchanged:: 2.6 - mode が 'a' でファイルが存在しない場合、ファイルが作られるようになり ました。 + .. versionchanged:: 2.7.1 + ファイルが ``'a'`` か ``'w'`` モードで作成されて、アーカイブに1ファイ ルも + 追加しないまま :meth:`close` した場合に、空のアーカイブとして正しい ZIPの + 構造がそのファイルに書かれるようになりました。 + + ZipFile はコンテキストマネージャーにもなっているので、 :keyword:`with` 文をサポートしています。 + 次の例では、 *myzip* は :keyword:`with` 文のブロックが終了したときに、 + (たとえ例外が発生したとしても) close されます。 :: + + with ZipFile('spam.zip', 'w') as myzip: + myzip.write('eggs.txt') + + .. versionadded:: 2.7 + :class:`ZipFile` にコンテキストマネージャーの機能を追加しました。 .. method:: ZipFile.close() @@ -150,8 +171,8 @@ .. note:: file-like オブジェクトは読み出し専用で、以下のメソッドを提供します: - :meth:`read`, :meth:`readline`, :meth:`readlines`, :meth:`__iter__`, - :meth:`next` + :meth:`!read`, :meth:`!readline`, :meth:`!readlines`, :meth:`!__iter__`, + :meth:`!next` .. note:: @@ -264,7 +285,7 @@ もし、 ``arcname`` (``arcname`` が与えられない場合は、 ``filename``) が null byte を含むなら、 アーカイブ中のファイルのファイル名は、 null byte までで、切り詰められ ます。 -.. method:: ZipFile.writestr(zinfo_or_arcname, bytes) +.. method:: ZipFile.writestr(zinfo_or_arcname, bytes[, compress_type]) 文字列 *bytes* をアーカイブに書き込みます。 *zinfo_or_arcname* はアーカイブ中で指定するファイル名か、また は :class:`ZipInfo` インスタンス @@ -275,13 +296,19 @@ 開かれていなければなりません。 閉じた ZipFile に対し :meth:`writestr` メソッドを呼び出す と :exc:`RuntimeError` が送出されます。 + *compressed_type* が指定された場合、その値はコンストラクタに与えられた *compression* + の値か、 *zinfo_or_arcname* が :class:`ZipInfo` のインスタンスだったとき はその値を + オーバーライドします。 + .. note:: - :class:`ZipInfo` インスタンスを、引数 *zinfo_or_acrname* として与えた 場合、 + :class:`ZipInfo` インスタンスを、引数 *zinfo_or_arcname* として与えた 場合、 与えられた :class:`ZipInfo` インスタンスのメンバーである、 *compress_type* で指定された圧縮方法が使われます。デフォルトでは、 :class:`ZipInfo` コンストラクターが、このメンバー を :const:`ZIP_STORED` に設定します。 + .. versionchanged:: 2.7 + *compression_type* 引数 以下のデータ属性も利用することができます。 ======================================= --- /library/zipfile.rst.diff Sun Oct 30 17:04:23 2011 +++ /library/zipfile.rst.diff Sun Nov 20 08:20:27 2011 @@ -68,8 +68,12 @@ file-like object. The *mode* parameter should be ``'r'`` to read an existing file, ``'w'`` to truncate and write a new file, or ``'a'`` to append to an - existing file. If *mode* is ``'a'`` and *file* refers to an existing ZIP file, ++ existing file. If *mode* is ``'a'`` and *file* refers to an existing ZIP - then additional files are added to it. If *file* does not refer to a ZIP file, ++ file, then additional files are added to it. If *file* does not refer to a - then a new ZIP archive is appended to the file. This is meant for adding a ZIP ++ ZIP file, then a new ZIP archive is appended to the file. This is meant for ++ adding a ZIP archive to another file (such as :file:`python.exe`). - archive to another file, such as :file:`python.exe`. Using :: - - cat myzip.zip >> python.exe @@ -86,10 +90,6 @@ - file would require ZIP64 extensions. ZIP64 extensions are disabled by default - because the default :program:`zip` and :program:`unzip` commands on Unix (the - InfoZIP utilities) don't support these extensions. -+ existing file. If *mode* is ``'a'`` and *file* refers to an existing ZIP -+ file, then additional files are added to it. If *file* does not refer to a -+ ZIP file, then a new ZIP archive is appended to the file. This is meant for -+ adding a ZIP archive to another file (such as :file:`python.exe`). .. versionchanged:: 2.6 - If the file does not exist, it is created if the mode is 'a'.