i want make sure string unicode in code, use unicode_literals, need write string file:
from __future__ import unicode_literals open('/tmp/test', 'wb') f: f.write("中文") # unicodeencodeerror so need this:
from __future__ import unicode_literals open('/tmp/test', 'wb') f: f.write("中文".encode("utf-8")) f.write("中文".encode("utf-8")) f.write("中文".encode("utf-8")) f.write("中文".encode("utf-8")) but every time need encode in code, lazy, change codecs:
from __future__ import unicode_literals codecs import open import locale, codecs lang, encoding = locale.getdefaultlocale() open('/tmp/test', 'wb', encoding) f: f.write("中文") still think if want write file, easier method?
you don't need call .encode() , don't need call locale.getdefaultlocale() explicitly:
#!/usr/bin/env python # -*- coding: utf-8 -*- import io io.open('/tmp/test', 'w') file: f.write(u"中文" * 4) it uses locale.getpreferredencoding(false) character encoding save unicode text file.
on python 3:
you don't need use explicit encoding declaration (
# -*- coding: utf-8 -*-), use literal non-ascii characters in python source code.utf-8default.you don't need use
import io: builtinopen()io.open()there- you don't need use
u''(uprefix).''literals unicode default. if want omitu''putfrom __future__ import unicode_literalsin code in question.
i.e., complete python 3 code is:
#!/usr/bin/env python3 open('/tmp/test', 'w') file: f.write("中文" * 4)
Comments
Post a Comment