Issue7262
Created on 2009-11-04 14:13 by shamilbi, last changed 2009-11-04 18:18 by lemburg.
| File name |
Uploaded |
Description |
Edit |
Remove |
|
eol-bug.py
|
shamilbi,
2009-11-04 14:13
|
code to reproduce |
|
|
|
msg94888 - (view) |
Author: (shamilbi) |
Date: 2009-11-04 14:13 |
|
different eol when writing to fp = codecs.open(.., 'w', 'cp866')
(windows, python-2.6.4)
def write(fp):
fp.write("""\
a
""")
# eol=0d0a (windows, python-2.6.4)
with open('0d0a.tmp', 'w') as fp:
write(fp)
# eol=0d0a (windows, python-2.6.4)
with codecs.open('0d0a-codecs.tmp', 'w') as fp:
write(fp)
# --- BUG ---
# eol=0a (windows, python-2.6.4)
with codecs.open('0a-codecs.tmp', 'w', 'cp866') as fp:
write(fp)
|
|
msg94895 - (view) |
Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) |
Date: 2009-11-04 18:02 |
|
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?
|
|
msg94898 - (view) |
Author: Marc-Andre Lemburg (lemburg) |
Date: 2009-11-04 18:18 |
|
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.
|
|
| Date |
User |
Action |
Args |
| 2009-11-04 18:18:06 | lemburg | set | messages:
+ msg94898 |
| 2009-11-04 18:02:07 | amaury.forgeotdarc | set | assignee: lemburg
messages:
+ msg94895 nosy:
+ amaury.forgeotdarc, lemburg |
| 2009-11-04 14:13:29 | shamilbi | create | |
|