1. 程式人生 > >python pickle模組TypeError: write() argument must be str, not bytes

python pickle模組TypeError: write() argument must be str, not bytes

問題:

TypeError: write() argument must be str, not bytes

解決方法:

這是開啟檔案的時候報的錯,報這個錯說明需要用二進位制形式開啟檔案。就是在開啟方式裡面加一個b

with open(file,"wb") as f:
    pickle.dump(data,f)

即可

附帶python常見的開啟檔案的方式:

檔案開啟的幾種訪問模式

訪問模式 說明
r 以只讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
w
開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a 開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
rb 以二進位制格式開啟一個檔案用於只讀。檔案指標將會放在檔案的開頭。這是預設模式。
wb 以二進位制格式開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab 以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
r+ 開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
w+ 開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a+ 開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。
rb+ 以二進位制格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
wb+ 以二進位制格式開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab+ 以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

 摘自:https://www.cnblogs.com/wzjbg/p/6383518.html