Python 数据持久化

Python 数据持久化

      • [1.1 pickle ------ Python对象的序列化](#1.1 pickle —— Python对象的序列化)
      • 主要功能
      • 使用示例
      • [1.2 copyreg ------ 注册pickle支持函数](#1.2 copyreg —— 注册pickle支持函数)
      • 使用示例
      • [1.3 shelve ------ Python对象的持久化](#1.3 shelve —— Python对象的持久化)
      • 使用示例
      • [1.4 marshal ------ 内部使用的对象序列化](#1.4 marshal —— 内部使用的对象序列化)
      • 使用示例
      • [1.5 dbm ------ Unix数据库接口](#1.5 dbm —— Unix数据库接口)
      • 使用示例

1.1 pickle ------ Python对象的序列化

pickle模块用于将Python对象序列化为字节流,以便保存到文件或通过网络传输。

主要功能

  • pickle.dump(obj, file): 将对象序列化并保存到文件。
  • pickle.load(file): 从文件中加载并反序列化对象。

使用示例

python 复制代码
import pickle

# 保存对象
data = {'name': 'Alice', 'age': 30}
with open('data.pkl', 'wb') as f:
    pickle.dump(data, f)

# 加载对象
with open('data.pkl', 'rb') as f:
    loaded_data = pickle.load(f)
print(loaded_data)

1.2 copyreg ------ 注册pickle支持函数

copyreg模块用于自定义对象的序列化和反序列化方法。

使用示例

python 复制代码
import copyreg
import pickle

class MyClass:
    def __init__(self, name, value):
        self.name = name
        self.value = value

def pickle_myclass(obj):
    return MyClass, (obj.name, obj.value)

copyreg.pickle(MyClass, pickle_myclass)

obj = MyClass("example", 42)
with open("myclass.pkl", "wb") as f:
    pickle.dump(obj, f)

with open("myclass.pkl", "rb") as f:
    loaded_obj = pickle.load(f)
print(loaded_obj)

1.3 shelve ------ Python对象的持久化

shelve模块用于将Python对象持久化到磁盘。

使用示例

python 复制代码
import shelve

# 保存对象
data = {'name': 'Alice', 'age': 30}
with shelve.open('mydata.shelve') as shelf:
    shelf['user_info'] = data

# 加载对象
with shelve.open('mydata.shelve') as shelf:
    loaded_data = shelf['user_info']
print(loaded_data)

1.4 marshal ------ 内部使用的对象序列化

marshal模块用于Python内部对象的序列化,通常用于保存字节码。

使用示例

python 复制代码
import marshal

# 保存对象
data = {'name': 'Alice', 'age': 30}
with open('data.marshal', 'wb') as f:
    marshal.dump(data, f)

# 加载对象
with open('data.marshal', 'rb') as f:
    loaded_data = marshal.load(f)
print(loaded_data)

1.5 dbm ------ Unix数据库接口

dbm模块提供了对Unix数据库文件的接口,用于存储键值对。

使用示例

python 复制代码
import dbm

# 打开数据库
with dbm.open('mydbm', 'c') as db:
    # 保存数据
    db['name'] = 'Alice'
    db['age'] = '30'
    
    # 获取数据
    print(db['name'])  # Alice
    print(db['age'])   # 30

    # 删除键
    del db['city']
    
    # 获取所有键
    print(list(db.keys()))  # ['name', 'age']
相关推荐
Never_Satisfied1 分钟前
在JavaScript中,将包含HTML实体字符的字符串转换为普通字符
开发语言·javascript·html
开开心心就好18 分钟前
电脑音质提升:杜比全景声安装详细教程
java·开发语言·前端·数据库·电脑·ruby·1024程序员节
暴风鱼划水19 分钟前
三维重建【4-A】3D Gaussian Splatting:代码解读
python·深度学习·3d·3dgs
t1987512825 分钟前
基于多假设跟踪(MHT)算法的MATLAB实现
开发语言·matlab
跟着珅聪学java28 分钟前
在Java中判断Word文档中是否包含表格并读取表格内容,可以使用Apache POI库教程
java·开发语言·word
Geoking.38 分钟前
PyTorch 中 model.eval() 的使用与作用详解
人工智能·pytorch·python
nn在炼金38 分钟前
图模式分析:PyTorch Compile组件解析
人工智能·pytorch·python
执笔论英雄39 分钟前
【大模型训练】zero2 梯度分片
pytorch·python·深度学习
Danceful_YJ41 分钟前
25.样式迁移
人工智能·python·深度学习
我也要当昏君41 分钟前
5.3 【2012统考真题】
开发语言·智能路由器·php