为什么在sys.setdefaultencoding之前要写reload(sys)

来源:互联网 发布:java中方法的定义包括 编辑:程序博客网 时间:2024/06/05 23:38

原文链接:http://www.360doc.com/content/16/0414/17/32448719_550605576.shtml

python 中获得系统默认编码为:

import sysprint sys.getdefaultencoding()

而修改系统默认编码应写为:

import sysreload(sys)sys.setdefaultencoding('UTF-8')

为什么需要一个看似多余的reload(sys)呢?
先看下python的模块加载过程:

# python -v# installing zipimport hookimport zipimport # builtin# installed zipimport hook# /usr/local/lib/python2.6/site.pyc matches /usr/local/lib/python2.6/site.pyimport site # precompiled from /usr/local/lib/python2.6/site.pyc....
if hasattr(sys, "setdefaultencoding"):    del sys.setdefaultencoding

在sys加载后,setdefaultencoding方法被删除了,所以我们要通过重新导入sys来设置系统编码.

0 0
原创粉丝点击