序列化及json&pickle的使用
一、序列化
序列化是指把内存里的数据类型转变成字符串。以使其能存储到硬盘或通过网络传输到远程。——硬盘或网络传输时只能接受bytes。
Python中用于序列化的两个模块:
- json:用于字符串和Python数据类型之间进行转换
- pickle:用于Python特有类型和Python数据类型间进行转换。
json和pickle模块都提供了四个功能:dumps、dump、loads、load
1、序列化
# 把内存数据转成字符,叫做序列化
data = {
'roles':[
{'role':'monster','type':'pig'},
{'role':'hero','type':'关羽'}
]
} f = open("game_status","w")
# f.write(data) # 写入失败,write只能接收字符串或者是bytes
f.write(str(data)) # 内容写入文件中
2、反序列化
# 把字符转成内存数据类型,叫做反序列化
f = open("game_status","r")
d = f.read()
d = eval(d)
print(d['roles'])
二、json模块
把数据类型转成字符串存到内存里的意义:
1、把你的内存数据通过网络共享给远程其他人
2、定义了不同语言之间的交互规则
纯文本:不能共享复杂的数据类型
xml:占空间大
json:相对来说,简单且可读性好。
import json
data = {
'roles':[
{'role':'monster','type':'pig'},
{'role':'hero','type':'关羽'}
]
} d = json.dumps(data) # 仅转为字符串,可以存入硬盘
print(d,type(d))
"""
输出:{"roles": [{"role": "monster", "type": "pig"}, {"role": "hero", "type": "\u5173\u7fbd"}]} <class 'str'>
""" f = open("test.json","w") # 创建文件对象
d1 = json.dump(data,f) # dump不仅将数据变为字符串还直接写入文件,但是只能存入文件对象中 d2 = json.loads(d) # 仅把字符串转为相应的数据类型
print(d2['roles'],type(d2))
"""
输出:[{'role': 'monster', 'type': 'pig'}, {'role': 'hero', 'type': '关羽'}] <class 'dict'>
""" # 从文件中读入:
f = open("test.json","r")
data = json.load(f)
print(data['roles'])
三、pickle模块
import pickle
d = {'name':'alex','age':22}
l = [1,2,3,4,'rain']
pk = open("data.pkl","wb")  # 针对bytes内容必须配置为wb模式
print(pickle.dumps(d))  # b'\x80\x03}q\x00(X\x04\x00\x....  bytes类型
pickle.dump(d,pk)
"""
data.pkl文件内容:�}q(XnameqXalexqXageqKu.
文件格式不可直接读。
"""
f = open("data.pkl","rb")
d = pickle.load(f)
print(d)
"""
输出:{'name': 'alex', 'age': 22}
"""
def sayhi():
    print('dddddd')
pickle.dumps(sayhi)
"""
执行不报错,说明pickle可以支持函数序列化
"""
四、json&pickle对比
json:
优点:跨语言、体积小
缺点:只能支持int\str\list\tuple\dict
pickle:
优点:专为Python设计,支持Python所有的数据类型。
缺点:只能在Python中使用,存储数据占空间大。
序列化及json&pickle的使用的更多相关文章
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
		一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ... 
- python序列化:       json & pickle & shelve        模块
		一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ... 
- python全栈开发day17-常用模块collections,random,time,os,sys,序列化(json pickle shelve)
		1.昨日内容回顾 1.正则表达式 # 正则表达式 —— str # 检测字符串是否符合要求 # 从大段的文字中找到符合要求的内容 1).元字符 #. # 匹配除换行 ... 
- python序列化模块 json&&pickle&&shelve
		#序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ... 
- Python模块:shutil、序列化(json&pickle&shelve)、xml
		shutil模块: 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fscr,fdst [, length]) # 将文件内容拷贝到另一个文件中 import shu ... 
- day6_python序列化之 json & pickle & shelve 模块
		一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ... 
- Python序列化,json&pickle&shelve模块
		1. 序列化说明 序列化可将非字符串的数据类型的数据进行存档,如字典.列表甚至是函数等等 反序列化,将通过序列化保存的文件内容反序列化即可得到数据原本的样子,可直接使用 2. Python中常用的序列 ... 
- 模块(序列化(json&pickle)+XML+requests)
		一.序列化模块 Python中用于序列化的两个模块: json 跨平台跨语言的数据传输格式,用于[字符串]和 [python基本数据类型] 间进行转换 pickle python内置的数据 ... 
- Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解
		把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json d ... 
随机推荐
- 【洛谷2113】看球泡妹子 DP背包
			看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有\(N\)支球队,\(M\)场比赛.男球迷小明喜欢看 ... 
- vue 路由导航白话全解析
			这里先放上官网的教程和说明:点击这里,vue导航守卫官方文档 路由守卫 路由守卫说白了就是路由拦截,在地址栏跳转之前 之后 跳转的瞬间 干什么事 全局守卫 全局守卫顾名思义,就是全局的,整个项目所有路 ... 
- vim多行注释与删除
			一.多行注释 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;2. 在行首使用上下键选择需要注释的多行;3. 按下键盘(大写)“I”键,进入插入模式:4. 然后输入注 ... 
- Training set,Gallery set 和Probe set的区别
			这段时间看了CVPR2017的这篇论文”SphereFace:Deep Hypersphere Embedding for Face Recognition" 里面有提到Probe set, ... 
- BZOJ - 2157 树链剖分+线段树
			/*H E A D*/ int from[maxn<<1],to[maxn<<1],nxt[maxn<<1],cost[maxn<<1],head[ma ... 
- js插件编程-tab框
			JS代码 (function (w) { //tab对象 function Tab(config) { //定义变量,防止变量污染 this.tabMenus=null; this.tabMains= ... 
- my31_MGR单写模式压测以及对比普通从库记录
			场景MGR单写模式三节点,db46写节点,db47/db48为读节点工具sysbencn.压测15个小时,db46上18线程纯写,12线程oltp混合测试,db48上12线程select在压测2个小时 ... 
- Merge Sorted Array II
			Merge two given sorted integer array A and B into a new sorted integer array. Example A=[1,2,3,4] B= ... 
- MySQL数据库插入中文时出现Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1
			今天在开发时候出现了这个问题 Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1 场景,往 ... 
- 多重if 与 switch case的区别
			多重if:可以做等值操作也可以做区间操作 switch case:只能做等值操作 
