把内存数据转成字符,叫序列化;把字符转成内存数据类型,叫反序列化。
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