Python pickle语法

Python pickle语法,python,io,pickle,Python,Io,Pickle,我正在使用最新的python版本,搜索之后,我似乎找不到任何适合我的pickles 我只是简单地阅读了一些教程,试图了解酸洗的相关知识,而这些教程中的任何源代码都不适用于我,我怀疑这与教程过时有关 我所尝试的与教程所展示的内容相同: import pickle lists = [1,2,3,4,5] pickle.dump(lists, open('log.txt', 'a+')) 这给了我以下错误: Traceback (most recent call last): File "<

我正在使用最新的python版本,搜索之后,我似乎找不到任何适合我的pickles

我只是简单地阅读了一些教程,试图了解酸洗的相关知识,而这些教程中的任何源代码都不适用于我,我怀疑这与教程过时有关

我所尝试的与教程所展示的内容相同:

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

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
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
unpickledlist = pickle.load(unpicklefile)
TypeError: 'str' does not support the buffer interface
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
unpickledlist=pickle.load(unpicklefile)
TypeError:“str”不支持缓冲区接口

感谢您的回复和帮助

模式可能会给您带来问题。而且,如果您在Windows上,以二进制模式打开文件会很有用。此外,您应该在重新打开之前关闭该文件,以便将其读回。并确保您正在写入和读取相同的文件(“log.txt”与“filename”):


你的代码对我来说很好,没有错误(除了匹配使用的文件名)。那么,您实际遇到了什么错误呢?听起来您在遵循为Python2.x设计的教程,而实际上您似乎在使用Python3.x。有细微的区别,如果你想使用Python3.x,那么最好遵循为该版本设计的教程。这对我来说似乎很有效,所以你可能是对的,因为我使用的是“a+”。感谢您的帮助:)此答案解决了问题,因为使用
'b'
模式(在Python 3.x中)打开文件时,需要写入程序提供
字节,而不是
str
(未编码的Unicode字符串)。
pickle
模块希望能够写入
字节
,有关详细信息,请参阅(“文件参数必须具有接受单个字节参数的write()方法”)