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

Python 3.x中pickle序列化后如何反序列化及实现列表写入保存?

没问题,我来帮你理清pickle反序列化和列表更新保存的操作步骤~

1. 反序列化(unpickle)文件的方法

首先,你需要用pickle.load()来读取这个.pkl文件。推荐用with语句打开文件,它会自动处理文件关闭,避免资源泄漏。代码示例如下:

import pickle

# 反序列化文件
with open("randomlost_presistence.pkl", "rb") as f:
    data = pickle.load(f)

# 先确认加载的数据类型和内容
print("加载的数据类型:", type(data))
print("加载的数据内容:", data)

运行这段代码后,你就能明确文件里的data是不是列表(或者其他你需要的类型)了。

2. 向列表添加内容并重新保存的完整流程

如果加载出来的data确实是列表,你可以直接对它做增删改操作,之后用pickle.dump()把更新后的列表重新保存回文件。完整代码如下:

import pickle

# 1. 读取并反序列化数据
with open("randomlost_presistence.pkl", "rb") as f:
    my_list = pickle.load(f)

# 2. 向列表添加内容(示例添加单个元素,批量添加可用extend)
my_list.append("新添加的内容")
# 批量添加示例:my_list.extend(["元素A", "元素B", "元素C"])

# 3. 将更新后的列表重新序列化保存
with open("randomlost_presistence.pkl", "wb") as f:
    pickle.dump(my_list, f)

print("列表已更新并保存完成!")
重要注意事项
  • 安全性提醒:pickle会执行序列化文件中的代码,绝对不要加载来自不信任来源的.pkl文件,避免恶意代码攻击。
  • 版本兼容性:Python 3.6生成的pickle文件,在3.7及以上版本基本都能正常加载,但低于3.6的版本可能出现兼容性问题。
  • 文件模式:读取必须用"rb"(二进制只读模式),写入必须用"wb"(二进制写入模式),这是pickle操作的硬性要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:34:25