序列化与反序列化

什么是序列化?
序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输。
反序列化就是将硬盘中或者网络中传来的一种数据格式转换成内存中数据结构。 为什么要有? 1.可以保存程序的运行状态
2.实现数据的跨平台交互 怎么用? json&pickle模块
其中json是通用的而pickle是只能在python识别 json优点:
具有跨平台性 json的局限性
只能支持/对应python部分的数据类型 pickle的优点:
可以支持所有的python数据类型 pickle的缺点:
只能被python识别,不能跨平台 ————————————————————————————————————————————————————————————————————————————————————————————————————————————
json的序列化.py

import json

func_dic = {
'1': 'login',
'2': 'register',
'3': 'check_balance',
'4': 'transfer',
'5': 'reply', } # 序列化:将内存中的数据类型——————————————>json中间格式 # 1.序列化得到json_str
# json_str = json.dumps(func_dic) # print(json_str,type(json_str))
# {"1": "login", "2": "register", "3": "check_balance", "4": "transfer", "5": "reply"} <class 'str'> # json格式全都是双引号 # 2.把json_str写入文件存起来
# with open('func.json','wt',encoding='utf-8')as f :
# f.write(json_str) # 1跟2合为一步
with open('func.json','wt',encoding='utf-8')as f:
json.dump(func_dic,f)

______________________________________________________________________________________________________________
json的反序列化.py
import json

# 反序列化:json的中间格式------------------>内存中的数据类型

#从文件中读取json_str
# with open('func.json','rt',encoding='utf-8')as f:
# json_str = f.read()
#
# # 将json_str转化成内存中的数据类型
# func_dic = json.loads(json_str)
#
# print(func_dic['2']) # 1跟2可以合成一步 with open('func.json','rt',encoding='utf-8')as f:
func_die = json.load(f) print(func_die['1']) ——————————————————————————————————————————————————————————————————————————————————————————————————————————————
json注意点
# json格式不能识别单引号,只能识别双引号

import json

# with open('func1.json','rt',encoding='utf-8')as f:
# l = json.load(f)
# print(l) # 用json序列化
# with open('func1.json','wt',encoding='utf-8')as f:
# l=[1,None,True]
# json.dump(l,f) # 用evel反序列化
# with open('func.json','rt',encoding='utf-8')as f:
# s = f.read()
# func_dic = eval(s)
# print(func_dic['1']) # with open('func1.json','rt',encoding='utf-8')as f:
# s=f.read() #s = '[1,null,true]'
# l = eval(s) #evel('[1,null,true]')
# print(l) # evel是把后面的字符串里的表达式拿出来在当前位置运行一下,把结果赋值给一个变量名 ————————————————————————————————————————————————————————————————————————————————————————————————————————————-—
pickle的序列化与反序列化.py

import pickle

# dic = {'name':'zrg','password':123,'height':170,'weight':120}
#
# # 序列化
# pkl = pickle.dumps(dic)
# print(pkl,type(pkl))
#
# with open(r'db.pkl','wb')as f:
# f.write(pkl) # with open(r'db.pkl','wb')as f:
# pickle.dump(dic,f) # 反序列化
# with open(r'db.pkl','rb')as f:
# pkl = f.read()
# dic = pickle.loads(pkl)
# print(dic['name']) # with open(r'db.pkl','rb')as f:
# dic = pickle.load(f)
#
# print(dic['weight'])


序列化与反序列化,json,pickle,xml,shelve,configparser模块的更多相关文章

  1. json pickle xml shelve configparser

    json:# 是一种跨平台的数据格式 也属于序列化的一种方式pickle和shevle 序列化后得到的数据 只有python才可以解析通常企业开发不可能做一个单机程序 都需要联网进行计算机间的交互 J ...

  2. 第二十一天,pickle json xml shelve configparser模块

    今日内容 1.pcikle 专用于python语言的序列化 2.json 是一种跨平台的数据格式 也属于序列化的一种方式 3.xml 可拓展标记语言 一种编写文档的语法 也支持跨平台 比较json而言 ...

  3. day5-python中的序列化与反序列化-json&pickle

    一.概述 玩过稍微大型一点的游戏的朋友都知道,很多游戏的存档功能使得我们可以方便地迅速进入上一次退出的状态(包括装备.等级.经验值等在内的一切运行时数据),那么在程序开发中也存在这样的需求:比较简单的 ...

  4. Python开发之序列化与反序列化:pickle、json模块使用详解

    1 引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像python这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在.另一方面,存储在内存够中的对象由于编程语言. ...

  5. Jackson序列化和反序列化Json数据完整示例

    Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...

  6. C#序列化及反序列化Json对象通用类JsonHelper

    当今的程序界Json大行其道.因为Json对象具有简短高效等优势,广受广大C#码农喜爱.这里发一个序列化及反序列化Json对象通用类库,希望对大家有用. public class JsonHelper ...

  7. (推荐JsonConvert )序列化和反序列化Json

    在Json文本和.Net对象之间转换最快的方法是试用JsonSerializer. JsonSerializer通过将.Net对象属性名称映射到Json属性名称,并为其复制值,将.Net对象转换为其J ...

  8. python类库32[序列化和反序列化之pickle]

      一 pickle pickle模块用来实现python对象的序列化和反序列化.通常地pickle将python对象序列化为二进制流或文件.   python对象与文件之间的序列化和反序列化: pi ...

  9. Learning-Python【20】:Python常用模块(3)—— shelve、pickle、json、xml、configparser

    什么是序列化/反序列化? 序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输,反序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构 为什么要有序列化/反序列化? 1 ...

  10. python常用模块:pickle、shelve、json、xml、configparser

    今日内容主要有: 一.pickle模块二.shelve模块三.json模块四.json练习五.xml模块 六.xml练习七.configparser模块 一.pickle模块 #pickle是一个用来 ...

随机推荐

  1. go标准库的学习-database/sql

    参考:https://studygolang.com/pkgdoc 导入方式: import "database/sql" sql包提供了保证SQL或类SQL数据库的泛用接口. 使 ...

  2. Spring定时任务使用和如何使用邮件监控服务器

    Spring相关的依赖导入进去,即可使用spring的定时任务! <!-- spring核心包 --> <dependency> <groupId>org.spri ...

  3. DIYer最担心的事来了!CPU降价彻底无望

    12月27日,IDC发布2019年中国PC市场十大预测.IDC指出,2018年全年中国PC市场预计最终销售为5200万台左右,下滑了3.4%.2019年中国PC市场会处于一种习惯性艰难期,但是市场也不 ...

  4. 理解HTML5中Range对象

    1.理解Range对象    重新来学习下HTML5中的Range对象和Selection对象,最近在维护富文本编辑器,感觉这方面的知识点很有用,所以趁着周末多学习下~  什么是Range对象? 在H ...

  5. Omi-router实战 Sorrow.X的web简历

    其实这篇文章,真的没啥写的. 主要是为了学以致用,使用了omi-router写了个,个人简历. 路由demo实战源码:https://github.com/SorrowX/resume_demo de ...

  6. SkylineGlobe 6.6 版本API更新

    TEPro6.6API更新 概述 API6.6 较6.5只做了微小的更新,您可以很容易的将6.5的应用程序移植为6.6版本的应用程序. C#环境中,修改步骤如下: 创建SGWorld66实例代替SGW ...

  7. CF1110G Tree-Tac-Toe 博弈论、构造

    传送门 UPD:之前可能对白色变无色的过程讲的不是很清楚,已经补充 显然在双方绝顶聪明的情况下,黑色不可能赢 首先考虑树上一个白色的点都没有的情况: 1.如果树上有一个点的度数\(\geq 4\),白 ...

  8. Luogu2993 FJOI2014 最短路径树问题 最短路树、长链剖分

    传送门 强行二合一最为致命 第一问直接最短路+$DFS$解决 考虑第二问,与深度相关,可以考虑长链剖分. 设$f_{i,j}$表示长度为$i$,经过边数为$j$时的最大边权和,考虑到每一次从重儿子转移 ...

  9. Mysql8.0的登录大坑……(忘记登录密码也可以这么搞)

    关于安装和使用就不说了,属于基本操作了: 我来重点记录一下关于使用前,使用navicat登录的时候报错,1130和2059 查看安装后随机生成的密码: grep 'temporary password ...

  10. php5.6安装Zend Opcache扩展

    假设php5.6安装路径为/data2/php[root@nextcloud src]# pwd/usr/local/src[root@nextcloud src]# wget http://pecl ...