Python3: TypeError: a bytes-like object is required, not 'str'

問題

今天下載了一個腳本,在運行時報錯TypeError: a bytes-like object is required, not 'str',這個錯誤從字面上看就很明顯,類型錯誤:需要一個類字節的對象,而不是字符串。具體報錯的位置在:

label_dict = pickle.load(f)

Python中的Pickle模塊實現了基本的數據序列與反序列化。這一句中pickle反序列化文件時報錯!

原因

那麼既然是在加載文件時報錯,就要看一下怎麼讀取文件的:

f = open('./testwords','r')
label_dict = pickle.load(f)

我們知道:open()函數中使用'r'屬性,即文本方式讀取,而'rb',以二進制文件方式讀取。

解決方案

f = open('./testwords','r')改爲f = open('./testwords','rb')即可!
也就是說,pickle.load()pickle.dump()必須要傳入二進制的格式纔可以!
但是在python2中則無需擔心這個問題,寫成r也不會出錯!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章