results={'version': u'\u4e2d\u5174'}
with open("H:\Work\\report.html", 'r') as f:
template = f.read()
print template
# tem =template.
content = template.format(**results)
with open("H:\Work\\report.html", 'w+') as f:
f.write(content)
# 'ascii'
竟然说sys没有setdefaultencoding的方法,其实sys是有这个方法的,但是要请出她老人家需要调用一次reload(sys),很奇怪,是么?
为什么呢?原因如下:
python在安装时,默认的编码是ascii,那如何获得系统的默认编码:
import sys
print sys.getdefaultencoding()
更改系统的默认编码:
import sys
reload(sys)
sys.setdefaultencoding('UTF-8')
为什么要reload sys模块,先看下python的模块加载过程:
# python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/local/lib/python2.6/site.pyc matches /usr/local/lib/python2.6/site.py
import site # precompiled from /usr/local/lib/python2.6/site.pyc
....
Python运行的时候首先加载了site.py,在site.py文件里有这么一段代码:
if hasattr(sys, "setdefaultencoding"):
del sys.setdefaultencoding
在sys加载后,setdefaultencoding方法被删除了,解释器里修改的编码只能保证当次有效,在重启解释器后,会发现,编码又被重置为默认的ascii了,那么有没有办法一次性修改程序或系统的默认编码呢。
如果需要在运行时(就是整个解释器启动完之后)进行setdefaultencoding,就只能重新加载sys这个模块。所以我们要通过重新导入sys来设置系统编码.
import sys
reload(sys)