首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Jupyter Notebook 設置 sys.setdefaultencoding 導致無輸出解決

     編輯:程式設計疑難解答

問題

Python 2.7 中 Jupyter Notebook 執行:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

後無法 print 輸出,PyCharm 正常。

原因

reload(sys) 會重置 sys.stdout 為 IPython 內部對象,導致標準輸出流丟失。

解決方案

import sys
# 保存原始流
stdi, stdo, stde = sys.stdin, sys.stdout, sys.stderr
reload(sys)
sys.setdefaultencoding('utf-8')
# 恢復流
sys.stdin, sys.stdout, sys.stderr = stdi, stdo, stde

實際上僅 stdout 被修改,三者恢復更保險。

建議

Python 2.7 建議遷移至 Python 3,默認 UTF-8 無此問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved