主要内容:
  一. 序列化概述
  二. pickle模块
  三. shelve模块
  四. json模块(重点!)
  五. configpaser模块

一. 序列化概述
1. 序列化: 将字典,列表等内容转换成一个字符串的过程就叫做序列化.

2. 为什么要把其他数据类型转换成字符串?
(1)能够在网络上传输的只能是bytes
(2)能够存储在文件里的只有bytes和str

3. 序列化的目的:
(1)以某种存储形式使自定义对象持久化
(2)将对象从一个地方传递到另一个地方
(3)使程序更具维护性
4. 反序列化:
序列化: str --> 数据结构
反序列化: str <-- 数据结构

5. 在Python中序列化的三种方案:
(1)pickle模块: 可以将Python中的任意数据类型转换成bytes并写入到文件中,同样也可以把文件中写好的bytes转换回Python的数据,这个过程被称为反序列化.
(2)shelve模块: 它是一种简单另类的序列化方案,有一点类似于今后会学习的redis.它可以作为一种小型的数据库来使用.
(3)json模块: 将python中常用的字典,列表转化成字符串.它是目前前后端数据交互使用频率最高的一种数据格式.


二. pickle模块
pickle是把python对象写入到文件中的一种解决方案.写入到文件中的是bytes,它不是给人看的,只有机器可以识别.
pickle可以把python中任意的数据类型序列化.

1. pickle模块中的dumps()方法和loads()方法
注意: dumps()和loads()与文件操作无关

举例说明:
import pickle   # 引入模块
class Cat:      # 创建类
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def catch_mouse(self):
        print(self.name, "抓老鼠")

cat = Cat("jerry", 18)    # 创建一个对象

byte = pickle.dumps(cat)  # dumps()方法 --> 序列化一个对象
print(byte)               # 打印结果是一堆很长的二进制字符串

new_cat = pickle.loads(byte)    # 把二进制字符串反序列化为原来的对象
new_cat.catch_mouse()           # 执行结果: jerry 抓老鼠 --> 反序列化之后得到的对象还是原来那个类型的对象
View Code

相关文章: