2

以下代码:

with open("J:\\python\\.data") as data:
    self.data=pickle.load(data)

产生以下错误:

File "J:\python\code.py", line 50, in get_events
    self.data=pickle.load(data)
TypeError: 'str' does not support the buffer interface

我读到我可能必须对其进行编码,并且我尝试了 utf-8 并且没有用。其他格式是什么?我会朝着正确的方向前进吗?

我忘了提到 .data 中的对象是一个列表,并且是使用协议 2 腌制的。var self.data 已经是一个列表

4

2 回答 2

7
with open("J:\\python\\.data", "rb") as data:
    self.data=pickle.load(data)

pickle文档中所述:

这需要一个二进制文件来读取 pickle 数据流。

因此,您需要使用"rb"二进制模式打开它。

于 2012-06-30T22:47:06.437 回答
1

在我的例子中,它试图打开一个在以前版本的 Python (2.7) 下腌制的对象。

一旦我重新腌制它,一切都很好。

于 2014-06-19T12:49:20.330 回答