我正在使用最新的python版本,经过搜索后,我似乎在 pickle 上找不到任何适合我的东西。

我只是在阅读教程以尝试学习 pickle ,而显然在这些教程上无法使用的源代码对我来说都行不通,我怀疑这与教程的过时有关。

我尝试过的与教程显示的内容相同:

import pickle
lists = [1,2,3,4,5]
pickle.dump(lists, open('log.txt', 'a+'))

这给了我以下错误:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
pickle.dump(lists, open('log.txt', 'a+'))
TypeError: must be str, not bytes


>>> import pickle
>>> unpicklefile = open('log.txt', 'r')
>>> unpickledlist = [1,2,3,4,5]
>>> unpickledlist = pickle.load(unpicklefile)

给我以下错误:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
unpickledlist = pickle.load(unpicklefile)
TypeError: 'str' does not support the buffer interface

感谢您的任何答复和帮助

最佳答案

'a+'模式可能会导致您出现问题。而且,如果您使用的是Windows,则以二进制模式打开文件会很有用。另外,您应该在重新打开文件之前将其关闭以重新读回。并确保您正在写入和读取相同的文件(“log.txt”与“文件名”):

import pickle
lists = [1,2,3,4,5]

f = open('tmp_pickle.pic', 'wb')
pickle.dump(lists, f)
f.close()

f = open('tmp_pickle.pic', 'rb')
unpickledlist = pickle.load(f)
print unpickledlist

关于Python pickle语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8334364/

10-16 17:38