Python pickle语法

5 python io pickle

我正在使用最新的python版本,经过搜索,我似乎找不到任何适合我的泡菜.

我只是通过教程试图学习酸洗,而且显然在教程上工作的源代码都不适用于我,我怀疑这与教程过时有关.

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

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

这给了我以下错误:

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
Run Code Online (Sandbox Code Playgroud)

这个

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

给我以下错误:

Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
unpickledlist = pickle.load(unpicklefile)
TypeError: 'str' does not support the buffer interface
Run Code Online (Sandbox Code Playgroud)

感谢您的回复和帮助

Ray*_*ger 2

'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
Run Code Online (Sandbox Code Playgroud)