Python Pickle出现“AttributeError:'str'对象没有属性'write'”错误

39

当我尝试对某个对象进行数据序列化(pickle)时,出现了一个 AttributeError: 'str' object has no attribute 'write' 的错误。

一个例子:

import pickle
pickle.dump({"a dict":True},"a-file.pickle")

产生:

...
AttributeError: 'str' object has no attribute 'write'

有什么问题吗?


我很想讨论这些踩票的问题...虽然这个问题看起来很琐碎,但如果它已经在这里了,那么它将为我节省宝贵的时间... - drevicko
不是我干的,但看看下投票按钮上的悬停文本:“这个问题没有展示任何研究努力……”如果理由起作用,那可能就是原因。总的来说,质疑负分是徒劳无功的;如果他们想告诉你,他们会的。 - msw
1
如果你的问题有一个完美的答案是“RTFM”,那么我可以理解为什么有人会给你的问题点踩。 - Mike McKerns
1
@MikeMcKerns,你知道吗,通常情况下在SO上获取答案比在FM上更快,特别是当你遇到一个没有信息的异常时(哪个字符串没有'write'?也许是“a dict”?所以pickle期望字典键具有写方法??发生了什么?)。 - drevicko
有趣的是,SO社区给了这个问题相同数量的赞和踩 - 看起来社区对这个问题存在分歧! - drevicko
显示剩余2条评论
1个回答

68

这是一个微不足道的错误:pickle.dump(obj, file)需要传入一个文件对象,而不是一个文件名。

我需要的是像这样的东西:

with open("a-file.pickle",'wb') as f:
    pickle.dump({"a dict":True},f)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接