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

Python中如何读取pickle文件中所有追加写入的dict字典?

pickle追加写入后无法读取全部对象的解决方法

问题原因

pickle.load()单次调用只会从文件流中读取一个序列化的pickle对象,你分两次追加写入了两个独立的pickle对象,单次调用自然只能获取到第一个写入的字典。

解决方法

循环调用pickle.load()读取文件,直到触发EOFError(代表文件内容已全部读取完毕),即可把所有追加写入的对象都读取出来,代码示例如下:

import pickle

# 存储所有读取到的字典
res_list = []
with open('test.ts', 'rb') as f:
    while True:
        try:
            temp = pickle.load(f)
            res_list.append(temp)
        except EOFError:
            break

# 输出所有读取到的字典
print(res_list)
# 输出:[{'first': 1}, {'second': 2}]

# 如果需要合并为一个字典,可执行如下操作
merged_dict = {}
for item in res_list:
    merged_dict.update(item)
print(merged_dict)
# 输出:{'first': 1, 'second': 2}

补充说明

  • 多次调用pickle.dump()追加写入同一个文件是pickle官方支持的合法用法,读取时只要按上述循环加载的方式处理即可。
  • 该方法仅适用于写入时是多次dump独立对象生成的pickle文件,如果写入时是把多个对象打包为一个整体dump的,不需要循环读取。

内容的提问来源于stack exchange,提问作者ali.es

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:03