目前系統使用的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索引了。