python3中pickle存储文件时遇到的问题 TypeError: write() argument must be str, not bytes//保存到文件为乱码

报错的存储代码:
test_data = [‘Save me!’, 123.456, True]
f = open(‘test.data’, ‘w’)
pickle.dump(test_data, f)
f.close()

报错1:
Traceback (most recent call last):
File “/home/zhao/文档/untitled/test65.py”, line 5, in
pickle.dump(test_data, f)
TypeError: write() argument must be str, not bytes

解决方法:
这是因为打开方式不对,**【特别说明】**python3中,通过pickle对数据进行存储时,必须用二进制(b)模式读写文件。
将’w’改为’wb’后,f = open(‘test.data’, ‘wb’),问题解决.

报错2:
文件test.data中的内容为乱码
解决方法:
在dump()里加上第三个参数,设为0.

最终的正确代码
test_data = [‘Save me!’, 123.456, True]
f = open(‘test.data’, ‘wb’)
pickle.dump(test_data, f, 0)
f.close()

参考:https://www.cnblogs.com/billyzh/p/6187651.html和https://blog.csdn.net/maan_liaa/article/details/80899384

你可能感兴趣的:(python3中pickle存储文件时遇到的问题 TypeError: write() argument must be str, not bytes//保存到文件为乱码)