28 Python - 对象持久化
Posted yijiexi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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关闭文件
以上是关于28 Python - 对象持久化的主要内容,如果未能解决你的问题,请参考以下文章