设为首页 收藏本站
查看: 1010|回复: 0

[经验分享] python-序列化

[复制链接]

尚未签到

发表于 2018-8-7 11:56:11 | 显示全部楼层 |阅读模式
  序列化的基本概念介绍:
  01
  什么是序列化
  序列化:把内存中的数据转成一种中间格式(json / pickle), 然后存放到硬盘中,永久保存
  反序列化:从文件中读出(json / pickle)格式,然后返解成python的数据类型
  02
  为什么要序列化
  1、数据结构持久化
  2、跨平台数据交互
  03
  如何进行序列化,反序列化
  json:
  缺点:
  只能支持部分python的数据类型
  优点:
  所有的语言都支持json格式
  应用:
  如果需要考虑跨平台性,则需要用json格式
  pickle
  缺点:
  只有python支持pickle格式
  优点:
  pickle能够支持所有的python数据类型
  应用:
  如果不需要考虑跨平台性,则可以用pickle格式
  Import json
  import json
  dic={'name':'egon','age':18}
  print(json.dumps(dic))#{"name": "egon", "age": 18} #python的idc类型就是对应json的{}
  dic={'name':'egon','age':18,'is_beautiful':True}
  print(json.dumps(dic))#{"name": "egon", "age": 18, "is_beautiful": true} Python的True对应json的true
  dic={'name':'egon','age':18,'is_beautiful':True}
  res=json.dumps(dic)
  print(res,type(res))
  {&quot;name&quot;: &quot;egon&quot;, &quot;age&quot;: 18, &quot;is_beautiful&quot;: true} <class 'str'>  json的tsring对应python的str
  序列化: 把字典序列化到文件中的简单的写法:
  res=json.dumps(dic) # 强调,json格式不识别单引号
print(res,type(res))
  with open('user.json','w',encoding='utf-8') as f: #存入到文件user.json可以不加,提醒是json格式的文件,字符串是wt,可以省略t,
  f.write(res)
  反序列化: 现在数据存入到了user.json文件,注释代码文件中的内容,此时内存中没有这个文件,此时要取这个内容要从user.json文件中去拿
  with open('user.json','r',encoding='utf-8') as f:
  res=f.read()
  dic=json.loads(res)
  print(dic['name'])
  强调,json格式不识别单引号
  with open('user1.json','r',encoding='utf-8') as f:
  res=f.read()
  dic=json.loads(res)
  print(dic['x'])
  user1.json

  {'x':1,'y':true} #反序列化的时候会报错,# obj,end = self.scan_once(s,>  {&quot;x&quot;:1,&quot;y&quot;:true} #反序列化的时候会报错,非要用双引号,不支持单引号,改成双引号能取出#egon
  简写的格式:
  序列化:
  dic={'name':'egon','age':18,'is_beautiful':True}
  with open('user2.json','w',encoding='utf-8') as f:
  json.dump(dic,f) #第一个参数是序列化的对象,第二个参数是要打开的文件,sjon.dum可以直接把字典放入到文件,就不用再掉f.read
  反序列化:
  with open('user.json', 'r', encoding='utf-8') as f:
  dic = json.load(f)
  print(dic['name'])
  import pickle
  序列化:
  pickle可以序列化任意python的数据类型
  print(json.dumps({1,2,3}))
  print(pickle.dumps({1,2,3}))
  dic={'name':'egon','age':18,'is_beautiful':True}
  res=pickle.dumps(dic)
  with open('user3.pkl','wb') as f:
  f.write(res)
  反序列化:
  with open('user3.pkl','rb') as f:
  res=f.read()
  dic=pickle.loads(res)
  print(dic['name'])
  简单写法
序列化:
  dic={'name':'egon','age':18,'is_beautiful':True}
  with open('user4.pkl','wb') as f:
  pickle.dump(dic,f)
反序列化
  with open('user4.pkl', 'rb') as f:
  dic = pickle.load(f)
  print(dic['name'])
  总结:Day-6-8
  序列化:python - -->json
  反序列化:json - -->python
  序列化:
  python
  dic到json
  dumps - --->json - ---->file【open -->write】
  dump
  反序列化:
  loads - ---->read
  load
  json
  支持多平台,使用与跨平台项目的开发
  pickle只支持python
  json格式的字符串,既然是字符串他有两个用处
  1、绑定函数,对数据进行持久化
  2、给别的平台发

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-548183-1-1.html 上篇帖子: 理解python中的装饰器 下篇帖子: Python基础语法 - 函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表