怎么老是重名 2022-09-12 20:38 采纳率: 100%
浏览 106
已结题

Python使用pickle.dumps函数进行序列化操作时出现的TypeError异常是什么原因?

问题遇到的现象和发生背景

最近学习Python时看见序列化的操作,许多人用pickle库中的dumps函数解决了这个问题。dumps函数的定义是这样的:

dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None)

有人这样使用的这个函数:

pickle.dumps(object,file)

然后目录下就创建了一个包含了一个对象转化为Bytes类型的数据

问题相关代码

我自己用cmd使用了一下:

Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pickle import dumps
>>> class a:
...     pass
...
>>> c = open('c.txt',"wb")
>>> dumps(a,c)
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: '_io.BufferedWriter' object cannot be interpreted as an integer
运行结果及报错内容

但是却报错说TypeError: '_io.BufferedWriter' object cannot be interpreted as an integer,翻译成中文就是“对象不能解释为整数”

我的解答思路和尝试过的方法

我也尝试过将类实例化后再进行序列化,依然是这样的报错内容。是什么原因啊?

  • 写回答

2条回答 默认 最新

  • 陈豆子 2022-09-19 17:12
    关注

    dumps改成dump。因为dump()是将对象转换成字节流并保存到文件中,dumps()只是将对象转换成字节流。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 已采纳回答 9月21日
  • 赞助了问题酬金10元 9月18日
  • 创建了问题 9月12日

悬赏问题

  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器