python-对象数据持久化操作

1.概念:

对象数据的持久化操作是将程序中的对象数据保存到外部存储介质(如文件、数据库等)中,以便在程序下次运行时能够读取和使用这些数据.

2.常用模块:marshal和shelve

回顾:序列化和反序列化

import pickle
# 1. 将字典对象,序列化写入文件,以二进制写入模式打开文件
with open("dat2.dat", mode="wb") as f:
#将字典user_dict序列化写入文件中
pickle.dump(user_dict, f)

# 2. 将数据反序列化程序中,以二进制读取模式重新打开文件
with open("dat2.dat", mode="rb") as f2:
# 将f2文件中的数据,反序列化成字典对象u
u = pickle.load(f2)
print(u, type(u))

marshal

实现字典数据保存到文件中、从文件中读取到程序中
import marshal

data = {"name": "Alice", "age": 25}

# 将字典数据序列化并保存到文件
with open("data.bin", "wb") as file:
    marshal.dump(data, file)
# 从文件中读取并反序列化数据
with open("data.bin", "rb") as file:
    loaded_data = marshal.load(file)
print(loaded_data)

优点:以二进制形式保存和读取,效率较高,不支持复杂的数据结构

shelve

实现通过字典方式在文件中保存 / 读取程序中的对象数据
import shelve
#创建字典
u_dict = {} # 用户数据
s_dict = {} # 学生信息
with shelve.open("dat4.db") as f:
#将字典存储在数据库文件下
f["user"] = u_dict
f['stu'] = s_dict
#再次打开数据库文件
with shelve.open("dat4.db") as f:
#读取对应的值
s = f['stu']
print(s, type(s))
u = f['user']
print(u, type(u))

优点:方便保存和读取各种类型的对象数据,并支持并发读取

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值