继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【2023年】第64天 python中的序列化

谦瑞
关注TA
已关注
手记 79
粉丝 8
获赞 8

一、序列化

1.序列化的流程以及可序列化的数据类型

首先是对象信息和数据结构信息——通过转化为后存储和传输——字符串类型

可序列化的数据类型:

  • number
  • str
  • list
  • tuple
  • dict,字典类型

不可用于序列化的数据类型

  • class
  • def
  • set

2. python中的json模块

json模块是一个通用的序列化模块。

方法名 参数 介绍 举例 返回值
dumps obj 对象序列化 json.dumps([1,2]) 字符串
loads str 返序列化 json.loads(’[1,2,3]’) 原始数据类型

3. python中的pickle模块

使用pickle模块效率要比json模块高。

方法名 参数 介绍 举例 返回值
dumps obj 对象序列化 pickle.dumps([1,2]) 比特
loads byte 返序列化 json.loads(’[1,2,3]’) 原始数据类型

4.程序实现

import json


def read(path):
    with open(path, 'r') as f:
        data = f.read()

    return json.loads(data)


def write(path, data):
    with open(path, 'w') as f:
        if isinstance(data, dict):
            _data = json.dumps(data)
            f.write(_data)
        else:
            raise TypeError('data is dict')
        return True


data = {'name': '杨家将', 'age': 18, 'top': 176}


if __name__ == '__main__':
    # write('test.json', data)
    result = read('test.json')
    print(result, type(result))

二、yaml格式文件的介绍

1.yaml格式的介绍

文本文件:xxx.yaml
服务器配置文件:

name: (代表key值)
	xiaomi (代表value值)
xinqing:(以列表的形式)
	-haha
	-heihei 
new:(以字典的形式呈现)
	a:b
	c:1

2.pyyaml模块的用法

用法:

f = open(yaml_file, 'r')
data = yaml.load(f.read())
f.close()

返回值:字典类型

{
name: 'xiaomi',
'age':10,
'xinqing':['haha', 'heihei'],
'new':{'a':'b', 'c':1}
}

3. 程序实现

url:
  https://www.imooc.com/
types:
  - 前沿
  - 前端
  - 后端
  - 移动端
  - 云计算
  - 运维
  - ui
python:
  web: django
  spader: bs5
import yaml


def read(path):
    with open(path, 'r') as f:
        data = f.read()
    result = yaml.load(data, Loader=yaml.FullLoader)  # 这里要加上Loader参数,并且赋值为yaml.FullLoader,目的是在数据解析过程变的更安全
    return result


if __name__ == '__main__':
    result = read('muke.yaml')
    print(result, type(result))
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP