什么叫序列化?

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

例:
把内存数据 转成字符
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'关羽','life':80}
# ]
# }
#
# f = open("game_status",'w')
# f.write(str(data)) 例:把字符转成 内存数据
f=open("game_status",'r')
d =f.read()
d =eval(d) #eval能把字符串转化成各种数据类型
print(d['roles'])
'''把内存数据 转成字符,叫序列化
把字符转成 内存数据 叫反序列化''' json 模块
# import json
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'关羽','life':80}
# ]
# }
# d = json.dumps(data) #.dumps是将数据转成字符串
# print(d,type(d))
# f = open("test.json","w")
# json.dump(data,f) #dump直接转成字符串,并写入文件 # d = json.dumps(data) #将数据转成字符串
# d2 = json.loads(d) #加载字符串,并转成字典赋值给d2
# print(d2['roles']) #打印字典d2['roles'] # f = open("test.json","r") #打开文件test.json
# data =json.load(f) #加载字符串f并转成字典,赋值 data
# print(data['roles'],type(data)) '''只是把数据类型转成字符串存到内存里的意义?
json.dumps json.loads
1、把你的内存数据 通过网络 共享给远程其它人
2、字义了不同语言的之前的交互规则
1、纯文本,坏处,不能共享复杂的数据类型
2、xml,坏处,占空间大
3、json,简单,可读性好''' import json
例:
# import json
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'关羽','life':80}
# ]
# }
# d = json.dumps(data) #.dumps是将数据转成字符串
# print(d,type(d))
# f = open("test.json","w")
# json.dump(data,f) #dump直接转成字符串,并写入文件 # d = json.dumps(data) #将数据转成字符串
# d2 = json.loads(d) #加载字符串,并转成字典赋值给d2
# print(d2['roles']) #打印字典d2['roles'] # f = open("test.json","r") #打开文件test.json
# data =json.load(f) #加载字符串f并转成字典,赋值 data
# print(data['roles'],type(data)) '''只是把数据类型转成字符串存到内存里的意义?
json.dumps json.loads
1、把你的内存数据 通过网络 共享给远程其它人
2、字义了不同语言的之前的交互规则
1、纯文本,坏处,不能共享复杂的数据类型
2、xml,坏处,占空间大
3、json,简单,可读性好''' import json
# import json
# data ={
# 'roles':[
# {'role':'monster','type':'pip','life':50},
# {'role':'hero','type':'关羽','life':80}
# ]
# }
# d = json.dumps(data) #.dumps是将数据转成字符串
# print(d,type(d))
# f = open("test.json","w")
# json.dump(data,f) #dump直接转成字符串,并写入文件
# d = json.dumps(data)  #将数据转成字符串
# d2 = json.loads(d) #加载字符串,并转成字典赋值给d2
# print(d2['roles']) #打印字典d2['roles'] # f = open("test.json","r") #打开文件test.json
# data =json.load(f) #加载字符串f并转成字典,赋值 data
# print(data['roles'],type(data)) '''只是把数据类型转成字符串存到内存里的意义?
json.dumps json.loads
1、把你的内存数据 通过网络 共享给远程其它人
2、字义了不同语言的之前的交互规则
1、纯文本,坏处,不能共享复杂的数据类型
2、xml,坏处,占空间大
3、json,简单,可读性好'''
import json
# f =open("json_file",'w',encoding='utf-8')
#
# d={'name':'alex','age':22}
# l=[1,2,3,4,'rain']
# json.dump(d,f) #dump字典到文件
# json.dump(l,f) #dump列表到文件,dump时没问题,但lodad时会报错。因为dump了多次不同类型的数据 f =open("json_file",'r',encoding='utf-8')
print(json.load(f)) #载入dump多次的不同数据类型会报错。 Pickle模块
import pickle
# d ={'name':'alex','age':22}
#
# l =[1,2,3,4,'rain']
# pk = open("data.pkl",'wb') #bytes,写入文件模式必须必成wb
# pickle.dump(d,pk) f= open("data.pkl","rb")
d =pickle.load(f)
print(d) '''json支持的序列化类型
str,int,tuple,list,dict
pickle支持的序列化类型
支持python里的所有的数据类型
只能在python里使用''' shelve模块
shelve支持所有的数据类型,只支持python,一般都用shelve模块,很少用pickle模块
import shelve
f = shelve.open('shelve_test') #打开一个文件 names = ['alex','rain','test']
info ={'name':'alex','age':22} f['names'] =names #持久化列表
f['info_dic']=info f.close()

最新文章

  1. java高新技术-基本数据类型拆装箱及享元设计模式
  2. jquery中隐藏div的几种方法
  3. Oracle数据库如何创建DATABASE LINK?
  4. 十五天精通WCF——第三天 client如何知道server提供的功能清单
  5. 操蛋的CTex
  6. Timestamp 使用
  7. C++的CreateThread实例
  8. FragmentTabHost切换Fragment时避免重复加载UI
  9. C#算法基础之堆排序
  10. 改变UITextField placeHolder 字体 颜色
  11. cocos2dx 初探 - VS2012 HELLOWORLD
  12. Pentaho Data Integration Step: BD Procedure Call
  13. 那些年被我坑过的Python——道阻且长(第五章实用模块讲解)
  14. 认识ptrace函数
  15. Surface Pro 4 和 Surface Book 使用名为 Surface UEFI(统一可扩展固件接口)的新固件接口
  16. ViewController加载顺序与self.view
  17. Android View架构总结
  18. 【Android Studio安装部署系列】三十四、将Eclipse项目导入到Android Studio中
  19. 学习Acegi应用到实际项目中(10)- 保护业务方法
  20. vue——script内容详解

热门文章

  1. springboot+Jsp部署linux
  2. Spring之Quartz定时任务和Cron表达式详解
  3. 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
  4. 转载 tomcat6下项目移植到tomcat7下出问题的解决办法
  5. 永洪BI——国内领军的一站式大数据分析平台
  6. PagedList.Mvc只有一行时不显示分页
  7. NSAttributedString能否设置文字下划线?是否支持line break?
  8. java poi读取excel公式,返回计算值(转)
  9. mkfs.xfs 命令找不到的解决方法
  10. 【BZOJ2002】[HNOI2010] 弹飞绵羊(大力分块)