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

 为了彻底解决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下面的变量的引用计数。

你可能感兴趣的:(sys.setdefaultencoding 引发 [Bad file descriptor]解决)