为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Python

一、序列化

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))
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消