首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pickle.dump在Python中的使用

pickle.dump在Python中的使用
EN

Stack Overflow用户
提问于 2012-01-03 01:00:53
回答 2查看 34.5K关注 0票数 26

我正在尝试学习如何在Python中使用pickle模块:

import pickle
x = 123
f = open('data.txt','w')
pickle.dump(x,f)

下面是我得到的结果:

Traceback (most recent call last):
  File "D:\python\test.py", line 5, in <module>
    pickle.dump(x,f)
TypeError: must be str, not bytes

但是,下面的代码运行得很好:

import pickle
dump = pickle.dump(123)
print(dump)

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-03 01:08:40

问题是你是在文本模式下打开文件的。你需要在这里使用二进制:

>>> f = open('data.txt','w')
>>> pickle.dump(123,f)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not bytes
>>> 
>>> f = open('data.txt','wb')
>>> pickle.dump(123,f)
>>> 
票数 39
EN

Stack Overflow用户

发布于 2012-01-03 01:07:22

类文件对象的write方法只接受单个字符串参数。pickle模块中的dumps方法自动将参数转换为字符串,而dump方法会将对象的pickled表示形式写入打开的文件。因为123不是字符串,所以它会抛出TypeError错误。

这在 pickle.dump documentation中得到了确认。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8703366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档