当前位置: 首页 > article >正文

​Python数据序列化模块pickle使用

pickle 是 Python 的一个标准库模块,它实现了基本的对象序列化和反序列化。序列化是指将对象转换为字节流的过程,这样对象就可以被保存到文件中或通过网络传输。反序列化是指从字节流中恢复对象的过程。

以下是 pickle 模块的基本使用方法:

序列化对象

要将一个对象序列化(保存到文件中),你可以使用 pickle.dump() 函数。这个函数接受两个主要参数:要序列化的对象和保存对象的文件对象(通常是一个打开的文件)。

import pickle

# 创建一个要序列化的对象
data = {'name': 'Alice', 'age': 30, 'is_student': False}

# 打开一个文件用于写入
with open('data.pkl', 'wb') as file:
    # 使用 pickle.dump() 将对象序列化并写入文件
    pickle.dump(data, file)

注意,文件必须以二进制写入模式('wb')打开,因为 pickle 序列化生成的是二进制数据。

反序列化对象

要从文件中反序列化(恢复)一个对象,你可以使用 pickle.load() 函数。这个函数接受一个文件对象作为参数,并返回从文件中读取并反序列化的对象。

import pickle

# 打开一个包含序列化对象的文件用于读取
with open('data.pkl', 'rb') as file:
    # 使用 pickle.load() 从文件中读取并反序列化对象
    loaded_data = pickle.load(file)

# 打印反序列化后的对象
print(loaded_data)

同样,文件必须以二进制读取模式('rb')打开。

安全性注意事项

虽然 pickle 非常方便,但它并不安全,因为它可以执行任意代码。这意味着如果你从不受信任的来源加载一个 pickle 文件,它可能会执行恶意代码。因此,永远不要从不受信任的来源加载 pickle 数据。

替代方案

对于需要序列化和反序列化数据的场景,如果安全性是一个考虑因素,你可以考虑使用其他序列化格式,如 JSON(通过 json 模块)或 XML。这些格式通常更安全,但可能不支持 Python 中所有类型的对象。

对于需要更高性能和更复杂对象序列化的场景,你可以考虑使用第三方库,如 msgpackprotobufavro。这些库通常提供了比 pickle 更好的性能和/或更多的特性。


http://www.kler.cn/a/457280.html

相关文章:

  • 【发票提取明细+发票号改名】批量提取PDF电子发票明细导出Excel表格并改名技术难点,批量PDF多区域内容识别提取明细并用内容改名的小结
  • 使用apisix+oidc+casdoor配置微服务网关
  • 华为云Welink数据怎么连接到小满CRM?
  • 【C++】B2083 画矩形
  • 基于51单片机的教学用自动光学演示装置设计
  • 若依(spring-cloud)修改登陆密码加密算法
  • 如何快速又安全的实现端口转发【Windows MAC linux通用】
  • yolov8算法及其改进
  • Golang的文件加密工具
  • Word批量更改题注
  • Pytorch | 利用DTA针对CIFAR10上的ResNet分类器进行对抗攻击
  • 问题-01
  • 学习C++:数据类型
  • Jmeter录制https请求
  • 在asp.net webapi项目中 将数据库连接字符串写在配置文件中,及Program配置Serilog存放路径以及设置
  • JavaWeb期末复习
  • Wordly Wise 3000 国际背单词01 介绍 + 测词汇量
  • 【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
  • Python 占位符详细笔记
  • C语言的数据结构
  • vue3 video 播放rtmp视频?(360浏览器支持)
  • mysql系列7—Innodb的redolog
  • 分布式版本管理工具——git中分支的相关知识
  • Webpack在Vue CLI中的应用
  • 7.即时通讯
  • 深度学习中batch_size