Python 2.x 與 3.x 版本不同造成的報錯處理

當前系統使用的Python版本爲3.6.0.
運行一些網上下載的代碼時,由於代碼經常是數年前用Python 2.x 編寫的,一些函數用法上會出現變化,直接運行會發生報錯。

記錄一下今天見到的小問題:


1.Error ‘dict’ object has no attribute ‘iteritems’

Python3 中 字典的 iteritems 屬性被改名爲了 item

報錯信息 對應方法
Error ‘dict’ object has no attribute ‘iteritems’ dict.iteritems() 改成 dict.items() 即可

更多的,

dict.iterkeys() dict.keys()
dict.itervalues() dict.values()

可以參考Stcakoverflow的這個問題的回答


2.from pil import image 報錯 DLL load failed

pillow(PIL)報錯找不到DLL,更新庫可以解決

報錯信息 對應方法
from pil import image 報錯 DLL load failed: 找不到指定的程序 我將pillow 從4.1.0升級到了4.2.1(最新),解決

出現這樣的錯誤原因還不是很理解,但與相關的庫文件安裝不全可能有關,所以升級了pillow,解決了問題。


3.TypeError: ‘dict_keys’ object does not support indexing

在python2中,key()方法返回的是一個列表;
而在python3中,其返回的是一個dict_keys對象;
所以我們使用 索引index ,取key()中的一個元素的時候,
在python3中,就不能直接使用,要使用list方法將dict_keys對象轉換成列表。
參考

簡單的講,用 list() 把報錯部分的 dict_keys() 對象變成 列表對象 ,就可以使用index索引了。

發佈了30 篇原創文章 · 獲贊 63 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章