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

Python 3.6使用pickle存储变量遇TypeError错误求助

解决Pickle序列化时的TypeError问题

这个错误在Python 3里挺常见的——pickle模块序列化对象后生成的是字节流,但你用"w"模式打开文件时,文件处于文本模式,只能写入字符串类型数据,这就直接导致了write() argument must be str, not bytes的报错。

核心修正方案:用二进制模式操作文件

只需要把打开文件的模式从"w"改成"wb"(二进制写入模式),就能让文件接收pickle输出的字节数据了。同理,后续读取这个序列化文件时,要对应使用"rb"(二进制读取模式)。

字符串类型变量的修正代码:

import pickle

# 字符串类型的Arpan
Arpan = "My name is Arpan"
# 用wb模式打开文件
fh = open("spdict.data", "wb")
pickle.dump(Arpan, fh)
fh.close()

# 验证读取效果(可选)
fh_read = open("spdict.data", "rb")
loaded_data = pickle.load(fh_read)
print(loaded_data)  # 输出:My name is Arpan
fh_read.close()

字典类型变量的代码:

import pickle

# 字典类型的Arpan
Arpan = {"One":1, "Two":2, "Three":3}
fh = open("spdict.data", "wb")
pickle.dump(Arpan, fh)
fh.close()

# 验证读取效果(可选)
fh_read = open("spdict.data", "rb")
loaded_dict = pickle.load(fh_read)
print(loaded_dict)  # 输出:{'One': 1, 'Two': 2, 'Three': 3}
fh_read.close()

另外推荐你使用with语句管理文件,它会自动帮你完成文件关闭操作,避免手动关闭可能遗漏的问题:

import pickle

Arpan = "My name is Arpan"
# 写入操作
with open("spdict.data", "wb") as fh:
    pickle.dump(Arpan, fh)

# 读取操作
with open("spdict.data", "rb") as fh:
    loaded_data = pickle.load(fh)
print(loaded_data)

内容的提问来源于stack exchange,提问作者Dr. Arpan Mehta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:15