您的位置:首页 > 其它

sys.setdefaultencoding 引发 [Bad file descriptor]解决

2014-08-14 12:09 369 查看
为了彻底解决python转码的问题,我们可能需要在程序启动的时候加上下面两句:

reload(sys)

sys.setdefaultencoding("utf-8")

但是如果我们以这样的方式来启动:

python test.py >> test.log



那么会看到这样的错误:

IOError: [Errno 9] Bad file descriptor: '<fdopen>'

究其原因 是 reload(sys)导致,因为这个函数会重置 sys.stdout

【如何解决】



a = sys.stdout

reload(sys)

sys.setdefaultencoding("utf-8")



也就是只要我们在reload方法之前引用一下sys.stdout就可以了,很神奇吧,说明python的reload会检查sys下面的变量的引用计数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: