You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3使用pickle.dump时报TypeError: write()参数需为str而非bytes

问题根因
  • 该错误与Python安装配置无关,属于文件打开模式使用错误
  • Python3中open()的'w'为文本写入模式,仅支持写入字符串类型数据;pickle.dump()会将对象序列化为字节流,类型不匹配就会触发你遇到的类型错误。
修复方法

修改文件打开的模式参数,将'w'替换为'wb'(二进制写入模式)即可,修正后完整代码如下:

import pickle 
import math 
object_pi = math.pi 
file_pi = open('filename_pi.obj', 'wb') 
pickle.dump(object_pi, file_pi)
file_pi.close()
最佳实践

推荐使用with上下文管理器管理文件句柄,无需手动调用close()关闭文件,可避免异常场景下的资源泄漏:

import pickle
import math

object_pi = math.pi
with open('filename_pi.obj', 'wb') as file_pi:
    pickle.dump(object_pi, file_pi)

注意:后续读取该序列化文件时,也需要使用'rb'二进制读取模式打开文件,再调用pickle.load()读取内容,否则会触发同类类型错误。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:24:02