python中序列化与反序列化(pickle/Json)

1. 为什么要序列化?

  • 便于存储——持久保存状态

在断电或重启程序之前将程序当前内存中所有的数据都保存下来(保存到文件中),以便于下次程序执行能够从文件中载入之前的数据,然后继续执行。

  • 便于传输——跨平台数据交互

序列化之后,不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

2. json 序列化

JSON是一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。

Json 模块提供了四个方法: dumps、dump、loads、load

2.1 dumps和dump 序列化方法

import json
# 将json类型的对象与json类型的字符串相互转换
dic = {'a': 1,'b': [1, 2, 3, 4, 5]}
# 序列化: 将python的字典转化为字符串传递给其他语言或保存
# 序列化成字符串:json.dumps(json_obj)
json_str = json.dumps(dic)
# 序列化字符串到文件中:json.dump(json_obj, write_file)
with open('1', 'w', encoding='utf-8') as w:
    json.dump(dic, w)  # 先将dic对象转化为字符串,再写入文件
    # w.write(dic)

2.2 loads和load 反序列化方法

import json
# 反序列化
json_str = '''{"a": 1, "b": [1, 2, 3, 4, 5]}'''
# json不接受单引号
# 反序列化成对象:json.loads(json_str)
new_dic = json.loads(json_str)  
print(new_dic, type(new_dic))
# 从文件读流中反序列化成对象:json.load(read_file)
with open('1', 'r', encoding='utf-8') as r:
    res = json.load(r)
    print(res)

2. pickle 序列化

pickle 模块提供了四个方法: dumps、dump、loads、load

2.1 dumps和dump 序列化方法

import pickle
dic = {
    'a': 1,
    'b': [1, 2, 3, 4, 5]
}
with open('2', 'wb') as w:
    pickle.dump(dic, w)

2.2 loads和load 反序列化方法

import pickle
dic = {
    'a': 1,
    'b': [1, 2, 3, 4, 5]
}
with open('2', 'rb') as r:
    print(pickle.load(r))

json通用,pickle只有python适用。

文章参考https://www.cnblogs.com/linwow/p/10693781.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值