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
相关产品推荐
相关产品推荐

