最近在寫項目的時候,用到了pickle模塊把對象寫進了文件,但是在調用的時候卻遇到了下圖錯誤
翻譯一下就是在讀取文件中的對象時未找到模塊,打開對應文件:
發現,pickle在寫入類對象時會將對應的類文件路徑寫入,我在文件內導包時為方便調試隨手用了.Person,而pickle.dump把這個路徑也寫到了文件里。當外部文件導包時就會發生問題。
這就回到了老生常談的導包問題了。
所有調用改成’from bank.package.文件 import 類‘即可。
https://www.jianshu.com/p/22bfcede92fd這篇文章詳細寫了使用pick時容易遇到的兩種錯誤,相對較詳細。
pickle.dumps()或pickle.dump()封裝時,會根據你所加載的類對象對數據進行對象化,同時也會把類對象的路徑也打包進去,記錄下它是根據那個目錄下的哪個類進行封裝的,同樣解析時也要找到對應目錄下的對應類進行解析還原
在同一個項目或文件中能完全使用,因為類對象路徑沒有變化