gh-51511: Note that codecs.open()'s encoding parameter affects automatic conversion to binary mode (#94370)

This commit is contained in:
Stanley 2022-10-21 16:01:05 -07:00 committed by GitHub
parent 4c1145bb37
commit d9407b174c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 3 deletions

View File

@ -189,7 +189,8 @@ wider range of codecs when working with binary files:
.. note:: .. note::
Underlying encoded files are always opened in binary mode. If *encoding* is not ``None``, then the
underlying encoded files are always opened in binary mode.
No automatic conversion of ``'\n'`` is done on reading and writing. No automatic conversion of ``'\n'`` is done on reading and writing.
The *mode* argument may be any binary mode acceptable to the built-in The *mode* argument may be any binary mode acceptable to the built-in
:func:`open` function; the ``'b'`` is automatically added. :func:`open` function; the ``'b'`` is automatically added.

View File

@ -878,7 +878,8 @@ def open(filename, mode='r', encoding=None, errors='strict', buffering=-1):
codecs. Output is also codec dependent and will usually be codecs. Output is also codec dependent and will usually be
Unicode as well. Unicode as well.
Underlying encoded files are always opened in binary mode. If encoding is not None, then the
underlying encoded files are always opened in binary mode.
The default file mode is 'r', meaning to open the file in read mode. The default file mode is 'r', meaning to open the file in read mode.
encoding specifies the encoding which is to be used for the encoding specifies the encoding which is to be used for the

View File

@ -708,7 +708,8 @@ class UTF16Test(ReadTest, unittest.TestCase):
"spamspam", self.spambe) "spamspam", self.spambe)
def test_bug691291(self): def test_bug691291(self):
# Files are always opened in binary mode, even if no binary mode was # If encoding is not None, then
# files are always opened in binary mode, even if no binary mode was
# specified. This means that no automatic conversion of '\n' is done # specified. This means that no automatic conversion of '\n' is done
# on reading and writing. # on reading and writing.
s1 = 'Hello\r\nworld\r\n' s1 = 'Hello\r\nworld\r\n'