首页 > 编程语言 > 详细

Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解

时间:2019-03-12 13:30:24      阅读:136      评论:0      收藏:0      [点我收藏+]

把内存数据转成字符,叫序列化;把字符转成内存数据类型,叫反序列化。

Json模块

Json模块提供了四个功能:序列化:dumps、dump;反序列化:loads、load。

import json

data = {
    roles:[
        {role:monster,type:pig,life:50},
        {role:hero,type:关羽,life:80}
    ]
}
#dumps和loads
d = json.dumps(data) #仅转成字符串
d2 = json.loads(d)
#dump
f = open(test.json,w)
json.dump(data,f) #转成字符串后直接写入文件,文件名后默认加上 .json 来说明这个文件是通过json转过的
#load
f = open(test.json,r)
data = json.load(f)

只是把数据类型转成字符串存在内存里的意义?   json.dumps      json.loads

1.把你的内存数据 通过网络 共享给远程其他人,只能用bytes格式

2.定义了不同语言之间的交互规则

1.纯文本,坏处:不能共享复杂的数据类型

2.xml 坏处:占空间大

3.json 好处:简单,可读性好

注:dump 可以 dump 多次,但是在 dump 多次之后,不能 load,因为数据类型不同的时候,没有办法识别是什么数据类型,无法处理。

pickle模块

import pickle

d = {name:alex,age:22}
l = [1,2,3,4,rain]
#dumps
pickle.dumps(d) #d为bytes类型
#loads
d = pickle.dumps(d)
pickle.loads(d)
#dump
pk = open(data.pkl,wb)
pickle.dump(d,pk) #打开文件的时候,因为文件是bytes,必须以 ‘wb‘ 的格式打开
#load
f = open(data.pkl,rb)
d = pickle.load(f)

json VS pickle

Json:

优点:跨语言、体积小

缺点:只能支持int,str,list,tuple,dict

Pickle:

优点:专为python设计,支持python所有的数据类型

缺点:只能在python中使用(不能跨平台),存储数据占空间大

 

什么叫序列化?

序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes

Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解

原文:https://www.cnblogs.com/Moxiaoyu666/p/10515846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!