码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-11-20 17:39:12      阅读:88      评论:0      收藏:0      [点我收藏+]

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

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

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

import sys

print sys.getdefaultencoding()


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

import sys

reload(sys)

sys.setdefaultencoding(‘UTF-8‘) #可以写成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方法被删除了,所以我们要通过重新导入sys来设置系统编码。






本文出自 “圣骑士控魔之手” 博客,请务必保留此出处http://wutengfei.blog.51cto.com/10942117/1983533

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

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

原文地址:http://wutengfei.blog.51cto.com/10942117/1983533

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!