Python-----对象序列化操作学习笔记

  1. marshal 模块

    • marshal 模块用于序列化 Python 对象,将其转换为字节流,以便在不同的 Python 程序之间进行传输或存储。
    • 这个模块主要用于将 Python 对象编码成字节码形式,它是 Python 解释器内部用于编码和解码 Python 对象的底层机制。
    • 由于 marshal 生成的字节码是特定于 Python 版本的,因此不适合用于长期存储或与其他编程语言交互。
    • marshal 生成的字节码通常不易于人类阅读和编辑,因此不适合用于与人交互的场景。
代码示例:
保存数据到文件:
import marshal

# 字典数据
data = {'key1': 'passwd1', 'key2': 'passwd2'}

# 将数据序列化并保存到文件
with open('data.marshal', 'wb') as f:
    marshal.dump(data, f)
    
从文件中读取数据:
import marshal

# 从文件反序列化数据
with open('data.marshal', 'rb') as f:
    data = marshal.load(f)
print(data)

  1. shelve 模块

    • shelve 模块是 Python 标准库中的简单持久化存储方案,基于 dbm(或其他后端数据库)来存储 Python 对象。
    • shelve 允许你像字典一样存储 Python 对象,其中的键值对是字符串,值可以是任意可被 pickle 序列化的对象。
    • shelve 的优点是简单易用,可以方便地存储和检索 Python 对象,但它也有一些限制,例如不支持并发写入和不同版本之间的兼容性问题。
    • 由于 shelve 使用 pickle 来序列化对象,因此你需要确保你要存储的对象是可被 pickle 序列化的。
代码示例:
保存数据到文件
import shelve

# 创建一个shelve对象,指定数据库名称
with shelve.open('data.db') as db:
    db['key1'] = 'value1'
    db['key2'] = 'value2'
    
从文件读取数据
import shelve

# 打开shelve对象并读取数据
with shelve.open('data.db') as db:
    print(db['key1'])
    print(db['key2'])

总结:

marshal 主要用于内部数据传输和编译优化,而 shelve 主要用于简单的持久化存储,用于将 Python 对象以键值对的形式存储在磁盘上,方便后续读取和操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值