changeset: 74873:8dbe8faea0e7 parent: 74870:31dfb4be934d parent: 74872:4b32309631da user: Nadeem Vawda date: Sat Feb 11 23:54:51 2012 +0200 files: Doc/library/gzip.rst Lib/gzip.py Misc/NEWS description: Merge: #13989: Document that GzipFile does not support text mode. diff -r 31dfb4be934d -r 8dbe8faea0e7 Doc/library/gzip.rst --- a/Doc/library/gzip.rst Sat Feb 11 11:28:16 2012 +0100 +++ b/Doc/library/gzip.rst Sat Feb 11 23:54:51 2012 +0200 @@ -44,9 +44,11 @@ The *mode* argument can be any of ``'r'``, ``'rb'``, ``'a'``, ``'ab'``, ``'w'``, or ``'wb'``, depending on whether the file will be read or written. The default - is the mode of *fileobj* if discernible; otherwise, the default is ``'rb'``. If - not given, the 'b' flag will be added to the mode to ensure the file is opened - in binary mode for cross-platform portability. + is the mode of *fileobj* if discernible; otherwise, the default is ``'rb'``. + + Note that the file is always opened in binary mode; text mode is not + supported. If you need to read a compressed file in text mode, wrap your + :class:`GzipFile` with an :class:`io.TextIOWrapper`. The *compresslevel* argument is an integer from ``1`` to ``9`` controlling the level of compression; ``1`` is fastest and produces the least compression, and diff -r 31dfb4be934d -r 8dbe8faea0e7 Lib/gzip.py --- a/Lib/gzip.py Sat Feb 11 11:28:16 2012 +0100 +++ b/Lib/gzip.py Sat Feb 11 23:54:51 2012 +0200 @@ -93,6 +93,9 @@ """The GzipFile class simulates most of the methods of a file object with the exception of the readinto() and truncate() methods. + This class only supports opening files in binary mode. If you need to open a + compressed file in text mode, wrap your GzipFile with an io.TextIOWrapper. + """ myfileobj = None @@ -119,8 +122,8 @@ The mode argument can be any of 'r', 'rb', 'a', 'ab', 'w', or 'wb', depending on whether the file will be read or written. The default is the mode of fileobj if discernible; otherwise, the default is 'rb'. - Be aware that only the 'rb', 'ab', and 'wb' values should be used - for cross-platform portability. + A mode of 'r' is equivalent to one of 'rb', and similarly for 'w' and + 'wb', and 'a' and 'ab'. The compresslevel argument is an integer from 1 to 9 controlling the level of compression; 1 is fastest and produces the least compression, @@ -137,8 +140,8 @@ """ - # guarantee the file is opened in binary mode on platforms - # that care about that sort of thing + if mode and ('t' in mode or 'U' in mode): + raise IOError("Mode " + mode + " not supported") if mode and 'b' not in mode: mode += 'b' if fileobj is None: diff -r 31dfb4be934d -r 8dbe8faea0e7 Misc/NEWS --- a/Misc/NEWS Sat Feb 11 11:28:16 2012 +0100 +++ b/Misc/NEWS Sat Feb 11 23:54:51 2012 +0200 @@ -466,6 +466,9 @@ Library ------- +- Issue #13989: Document that GzipFile does not support text mode, and give a + more helpful error message when opened with an invalid mode string. + - Issue #13590: On OS X 10.7 and 10.6 with Xcode 4.2, building Distutils-based packages with C extension modules may fail because Apple has removed gcc-4.2, the version used to build python.org

AltStyle によって変換されたページ (->オリジナル) /