28 Python - 对象持久化

对象持久化

01持久化概述

序列号和反序列化

内存中数据想存储到硬盘即持久化,举例游戏中途状态存储为下次玩耍保存

 

 

 

02使用格式化文本

扁平文件即文本文件,文本初衷即保存文本。

在内存中运行的一些对象或数据结构都有一定的类型,如列表  字典表 元组,存入文本变成纯文字,当再次载入内存需要反序列化

 

 

写入文本是文字

 

 

读取出来需要反序列化为列表数据结构

读出来给了一个临时变量lst

Eval把括号传递字符串转换为python的表达式

 

 

 

 

 

03 Pickle

如果结构比较复杂,用文本这种方式就不合适了,文本本身就是存储文字,所以建议用其他持久化技术

       Pickle是一个模块,专门用于序列化和反序列化

 

 

注意:pickle处理字符串时方法为loads其中的s表示字符串非复数

例子:将person字典序列化为字符串,然后再将字符串反序列化为对象字典

 

 

例子:将person字典序列化为文本,然后将文本反序列化为字典

注意:pickle处理文本用的方法是load,区别于处理字符串的loads

 

 

 

 

 

04 shelve

       Pickle适用于序列化一个对象,多个对象存入一个文件时,pickle会把多个对象当成一个对象处理,所以需要适用shelve。

       Shelve特征:可以将多个对象存储到一个文件中,类似于键值来区分多个对象

 

 

例子:一个list  一个dict

其中shelve.open直接创建了一个二进制文件存储我们的信息

然后存入两个对象

再用len查看shelve构造的文件有几个对象,结果是2个

 

 

那么,如何读取里面的信息呢

 

 

删除某一个对象

 

 

 

自定义类型的序列化和反序列化

 

 

定义自定义类

 

 

 

 

 

写入自定义对象——注意最后用close关闭文件

 

 

 

 

读取自定义对象——注意最后用close关闭文件

 

 

转载于:https://www.cnblogs.com/yijiexi/p/11140641.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值