On 13/02/2014 00:44, Tim Chase wrote:
On 2014-02-12 23:36, Mark Lawrence wrote:
On 12/02/2014 22:14, Tim Chase wrote:
To be pedantic, you can only write *bytes* to files, so you need
to serialize your lists (or other objects) to strings and then
encode those to bytes; or skip the string and encode your
list/object directly to bytes.
Really?
>>> f = open('test.txt', 'w')
>>> f.write('a string')
8
>>> f.close()
>>>
Yep:
s = "\u3141" # HANGUL LETTER MIEUM
f = open('test.txt', 'w')
f.write("\u3141")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\u3141' in
position 0: ordinal not in range(128)
Just because the open() call hides the specification of how Python
should do that encoding doesn't prevent the required encoding from
happening. :-)
-tkc
Which clearly reinforces the fact that what you originally said is
incorrect, I don't have to do anything, Python very kindly does things
for me under the covers.
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
---
This email is free from viruses and malware because avast! Antivirus protection
is active.
http://www.avast.com
--
https://mail.python.org/mailman/listinfo/python-list