New submission from Alexey Borzenkov:
There's a regression in file.writelines behavior for binary files when writing
unicode strings, which seems to have first appeared in Python 2.7.7. The
problem is that when writing unicode strings the internal representation (UCS2
or UCS4) is written instead of the actual text, which also directly contradicts
documentation, which states "This is equivalent to calling write() for each
string". However on Python 2.7.7+ they are no longer equivalent:
>>> open('testfile.bin', 'wb').writelines([u'Hello, world!'])
>>> open('testfile.bin', 'rb').read()
'H\x00e\x00l\x00l\x00o\x00,\x00 \x00w\x00o\x00r\x00l\x00d\x00!\x00'
>>> open('testfile.bin', 'wb').write(u'Hello, world!')
>>> open('testfile.bin', 'rb').read()
'Hello, world!'
This code worked correctly no Python 2.7.6.
----------
components: IO
messages: 266605
nosy: snaury
priority: normal
severity: normal
status: open
title: Regression in file.writelines behavior
type: behavior
versions: Python 2.7
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue27154>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com