2011-08-11 28 views
5

我从我的原代码后,类型错误: 'STR' 不支持缓冲区接口

crystal = open('vmises.dat','r') 
crystalincrement = pickle.load(crystal) 
crystaldir = pickle.load(crystal) 
crystalface = pickle.load(crystal) 
crystal.close() 

错误是,

crystalincrement = pickle.load(crystal) 

类型错误: 'STR' 不支持缓冲区接口

我使用Python V 3.2

回答

5

这个问题在我最初发布这个并被接受后进行了编辑。答案更新后的问题是,以二进制方式打开文件:

crystal = open('vmises.dat', 'rb') 

回答到原来预编辑的问题:

嘛,data是一个字符串。您需要处理的对象是a

a = open('data.txt','r') 
b = pickle.load(a) 
c = pickle.load(a) 
d = pickle.load(a) 
a.close() 

对于pickle信息,请参阅Python WikiPython for Kids

+9

Python for Kids?哎哟。 –

+4

如果有人对文档有疑问,那么将它们指向其他地方使用相同语言来描述该文档无济于事。你需要将它们指向某个能够以不同方式描述它的地方。 – agf

+2

我想我们在这一点上必须诚实,并承认我们只是一个荣耀的搜索引擎服务。 –

0

pickle模块加载腌对象,WH ich是一个Python对象的序列化版本。此代码试图将序列化的数据集加载到您的程序中。你可以阅读更多关于这个模块的位置:http://docs.python.org/library/pickle.html

我不知道你已经定义的变量data,但你可能想从变量a,这是指针,该泡菜发生在一个文件中加载,或将该变量重命名为data

data = open('data.txt','r') 
b = pickle.load(data) 
c = pickle.load(data) 
d = pickle.load(data) 
data.close() 
+0

很快的回复!抱歉错字错误,我编辑过。 – coolcing

+0

现在您正试图在不存在的对象上调用'.close()'。什么行特别引发错误,在哪个版本的Python中,它是否具有堆栈跟踪?这是所有有用的信息。 –

15

真正的答案应该是在Windows中以二进制模式打开文件。 open('data.txt','rb')

相关问题