最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決reload(sys)后print失效的問題

 更新時間:2020年04月25日 08:56:37   作者:碧水幽幽泉  
這篇文章主要介紹了解決reload(sys)后print失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

python版本: python2.7.6

#查看python默認編碼格式

>>> import sys
>>> print sys.getdefaultencoding() #python 2.x 默認編碼是ascii格式; python 3.x 默認編碼是utf-8格式
ascii
#設置python默認的編碼格式

>>> import sys
>>> print sys.setdefaultencoding('utf-8')

操作如下:

>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> reload(sys)
>>> sys.setdefaultencoding('utf-8')
>>> tmp = ('中國','英國')
>>> tmp
>>> print tmp
>>> 

如上面的操作所示:設置python編碼格式后,print失效了,沒有任何輸出。

解決方法1: 在python代碼中進行改變

import sys 
reload(sys) 
sys.setdefaultencoding('utf-8') 
#注意:使用此方式,有極大的可能導致print函數(shù)無法打印數(shù)據(jù)!

#改進方式如下:
import sys #這里只是一個對sys的引用,只能reload才能進行重新加載
stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr 
reload(sys) #通過import引用進來時,setdefaultencoding函數(shù)在被系統(tǒng)調用后被刪除了,所以必須reload一次
sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde 
sys.setdefaultencoding('utf-8')

說明:手動執(zhí)行了reload(sys)以后,sys模塊的這三個變量將會被重置,導致輸出無法顯示在IDLE。

所以解決方案很簡單,只需要在reload之前把這三個變量都復制一份,reload之后再恢復回來就行了:

解決方法2:python安裝目錄下的lib\site-packages文件夾下新建一個sitecustomize.py。 #推薦此方法

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

這樣在python文件中就不用在import模塊后添加

reload(sys)
sys.setdefaultencoding('utf8')

這兩句話了,也不用擔心print失效的問題

補充知識:Python IDLE reload(sys)后print無法正常執(zhí)行命令的原因

通常大多數(shù)人執(zhí)行reload(sys)這條語句其實僅僅是為了能夠修改Python的默認字符集,也就是能夠調用sys.setdefaultencoding()。但是如果在IDLE中執(zhí)行reload(sys),就會導致接下來無法正常執(zhí)行任何命令。

起初遇到這個問題也是束手無策,后來無意間在stackoverflow上看到有人說到了這個問題。原來是因為IDLE作為一個GUI Shell環(huán)境,在啟動初始化過程中,會設置特定的標準輸入、標準輸出和標準錯誤輸出,使得輸入和輸出都在IDLE的GUI Shell中,可以在IDLE中通過如下方式查看:

>>> import sys 
>>> print sys.stdin 
<idlelib.PyShell.PseudoInputFile object at 0x00000000027AF2E8> 
>>> print sys.stdout 
<idlelib.PyShell.PseudoOutputFile object at 0x00000000027AF320> 
>>> print sys.stderr 
<idlelib.PyShell.PseudoOutputFile object at 0x00000000027AF358> 
>>>  

而如果手動執(zhí)行了reload(sys)以后,sys模塊的這三個變量將會被重置,導致輸出無法顯示在IDLE。所以解決方案很簡單,只需要在reload之前把這三個變量都復制一份,reload之后再恢復回來就行了:


>>> stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr 
>>> reload(sys) 
>>> sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde 
>>> print sys.stdout 
<idlelib.PyShell.PseudoOutputFile object at 0x00000000027AF320> 
>>>

細心的人可能會想到,reload(sys)之后,如果標準輸入、標準輸出和標準錯誤輸出都不起作用了,那么relaod(sys)后面那一句sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde怎么能夠執(zhí)行呢?所以其實reload(sys)之后、恢復之前,標準輸入還是可以正常工作的,可以通過如下代碼來檢驗:

>>> reload(sys) 
>>> sys.stdout=stdo 
>>> print sys.stdin 
<open file '<stdin>', mode 'r' at 0x0000000001CAB030> 
>>> print sys.stdout 
<idlelib.PyShell.PseudoOutputFile object at 0x00000000027AF320> 
>>> print sys.stderr 
<open file '<stderr>', mode 'w' at 0x0000000001CAB150> 
>>>  

所以問題就解決了,但是必須要強調:

千萬不要輕易使用reload(sys),除非你完全清除這么做帶來的結果!僅僅為了能夠重新設定Python的默認編碼就執(zhí)行reload(sys)更是非常不明智的行為!

Python的設計者故意在Python初始化完成以后刪除sys模塊里面的setdefaultencoding()方法,就是為了不讓在運行時隨意更改Python默認編碼,以免出現(xiàn)一些未知的問題。事實上,關于編碼問題,完全有別的更可靠的方法解決。

以上這篇解決reload(sys)后print失效的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python偏函數(shù)Partial function使用方法實例詳解

    Python偏函數(shù)Partial function使用方法實例詳解

    這篇文章主要介紹了Python偏函數(shù)Partial function使用方法實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 基于python實現(xiàn)圖片轉字符畫代碼實例

    基于python實現(xiàn)圖片轉字符畫代碼實例

    這篇文章主要介紹了基于python實現(xiàn)圖片轉字符畫代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Python3.x+迅雷x 自動下載高分電影的實現(xiàn)方法

    Python3.x+迅雷x 自動下載高分電影的實現(xiàn)方法

    這篇文章主要介紹了Python3.x+迅雷x 自動下載高分電影的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • pytest配置文件pytest.ini的詳細使用

    pytest配置文件pytest.ini的詳細使用

    這篇文章主要介紹了pytest配置文件pytest.ini的詳細使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python基礎學習之類與實例基本用法與注意事項詳解

    Python基礎學習之類與實例基本用法與注意事項詳解

    這篇文章主要介紹了Python基礎學習之類與實例基本用法與注意事項,結合實例形式詳細分析了Python面相對象程序設計中關于類的定義與實例化對象相關操作技巧與注意事項,需要的朋友可以參考下
    2019-06-06
  • Python 隱藏輸入密碼時屏幕回顯的實例

    Python 隱藏輸入密碼時屏幕回顯的實例

    今天小編就為大家分享一篇Python 隱藏輸入密碼時屏幕回顯的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python中MySQLdb模塊用法實例

    python中MySQLdb模塊用法實例

    這篇文章主要介紹了python中MySQLdb模塊用法,以實例形式詳細講述了MySQLdb模塊針對MySQL數(shù)據(jù)庫的各種常見操作方法,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • python實現(xiàn)從字符串中找出字符1的位置以及個數(shù)的方法

    python實現(xiàn)從字符串中找出字符1的位置以及個數(shù)的方法

    這篇文章主要介紹了python實現(xiàn)從字符串中找出字符1的位置以及個數(shù)的方法,對于Python字符串操作的學習有一定的幫助與借鑒作用,需要的朋友可以參考下
    2014-08-08
  • python中列表的常見操作梳理總結(一)

    python中列表的常見操作梳理總結(一)

    這篇文章主要介紹了python中列表的常見操作梳理總結,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Springboo如何t動態(tài)修改配置文件屬性

    Springboo如何t動態(tài)修改配置文件屬性

    這篇文章主要介紹了Springboo如何t動態(tài)修改配置文件屬性問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論

山丹县| 四川省| 婺源县| 中卫市| 八宿县| 张家口市| 黄龙县| 吉木萨尔县| 和林格尔县| 儋州市| 靖宇县| 利津县| 左权县| 墨脱县| 新野县| 舟曲县| 嘉兴市| 大余县| 凤山市| 平远县| 屏山县| 浑源县| 成安县| 曲周县| 兴隆县| 陈巴尔虎旗| 富顺县| 双柏县| 綦江县| 马山县| 陕西省| 绥德县| 峨眉山市| 芦山县| 县级市| 云南省| 烟台市| 朝阳县| 吴旗县| 茌平县| 永济市|