The docs say:: Files are always opened in binary mode, even if no binary mode was specified. This is done to avoid data loss due to encodings using 8-bit values. This means that no automatic conversion of '\n' is done on reading and writing. But this does not match the code of codecs.open():: if encoding is not None and \ 'b' not in mode: # Force opening of the file in binary mode mode = mode + 'b' When the encoding is None, the file is opened in text mode. Marc-Andre, what do you think? is it a documentation bug instead?
Amaury Forgeot d'Arc wrote: > > Amaury Forgeot d'Arc <amauryfa@gmail.com> added the comment: > > The docs say:: > Files are always opened in binary mode, even if no binary mode was > specified. This is done to avoid data loss due to encodings using > 8-bit values. This means that no automatic conversion of '\n' is done > on reading and writing. > > But this does not match the code of codecs.open():: > if encoding is not None and \ > 'b' not in mode: > # Force opening of the file in binary mode > mode = mode + 'b' > > When the encoding is None, the file is opened in text mode. > Marc-Andre, what do you think? is it a documentation bug instead? Agreed, it's a documentation bug. If no encoding is specified, codecs.open() works just like the standard open() (except for the default value of mode, but that's documented). The idea was to provide a drop-in replacement for open() - with the added encoding parameter support. Perhaps the default mode should have been 'r' to match the regular open() - I guess it's too late to change that, though.