序列化与反序列化

什么是序列化?
序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输。
反序列化就是将硬盘中或者网络中传来的一种数据格式转换成内存中数据结构。 为什么要有? 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. windows下手动安装 Apache+php+mysql

    PHP 为什么先说php,因为apache的配置要写入php的一些路径 http://php.net/downloads.php  选择windows donwload 选择Thread Safe的版 ...

  2. ORA-600 [Kcbz_check_objd_typ_1] Running a Job (Doc ID 785899.1)

    ORA-600 [Kcbz_check_objd_typ_1] Running a Job (Doc ID 785899.1) To Bottom In this Document   Symptom ...

  3. bwdist matlab

    bwdist函数用于计算元素之间的距离. 举个例子: 如果a= 0     0     0     0     0     0     1     1     1     0     0     1  ...

  4. 如何用css实现"等高布局"。

    有时候为了让网页实现美观,在不知道高度的情况下,我们要用css实现等高布局效果,传统的方法, 我们可以用javascript实现,但是由于需求决定或者其他的情况下,我们只能用css实现,其方法主要是采 ...

  5. JAVA 第七周学习总结

    20175308 2018-2019-2 <Java程序设计>第七周学习总结 教材学习内容总结 本周学习第八章:常用实用类 String类: String类位于java.lang包中,被定 ...

  6. flask 路由和视图

    路由设置的俩种方式 @app.route('/xxx') def index(): return 'index' ------------------------------------------ ...

  7. 阿里图标库使用IconFont

    1.注册账号登陆 2.创建项目 3.搜索想使用的图标,添加入库,或者上传自己的图标入库 4.在图标库中,将添加的图标加入项目 5.将项目图标下载至本地 6.下载文件为 包括三种格式,使用方法不同 Un ...

  8. 9-51单片机ESP8266学习-AT指令(单片机采集温湿度数据通过8266发送给AndroidTCP客户端显示)

    http://www.cnblogs.com/yangfengwu/p/8798512.html 补充:今天答应了一个朋友写一下如果单片机发过的是字符串应该怎么解析,答应了今天写,哦哦哦是明天了,闲话 ...

  9. 源码篇:Python 实战案例----银行系统

    import time import random import pickle import os class Card(object): def __init__(self, cardId, car ...

  10. Ionic 动态配置url路由的设置

    随着Ionic App功能的不断增加,需要路由的url设置就越来越多,不喜欢在config函数中写一堆硬代码,一则不美,二则维护起来也麻烦,能不能把这些数据独立出来呢? 经过查找资料与各种实验,最终找 ...