python中序列化模块json和pickle
json模块:json是第三方包,不是系统内置模块,以字符串序列
常用操作有:
json.dumps() # 将变量序列化,即将功能性字符转化为字符串
例:
>>> import json
>>> name = {"name":"egon","age":18}
>>> res = json.dumps(name)
>>> print(res)
{"name": "egon", "age": 18}
>>> print(res,type(res))
{"name": "egon", "age": 18} <class 'str'>
json.loads() #将字符串反序列化成功能性字符
例:
>>> import json
>>> name = "[1,2,3]"
>>> print(type(name))
<class 'str'>
>>> res = json.loads(name)
>>> print(res,type(res))
[1, 2, 3] <class 'list'>
>>>
json.dump(dump_obj,write_file) 将dump_obj序列化后写入文件write_file
例:
>>> tom = {"tom":{"age":19,"score":89}}
>>> f = open(r"C:\Users\DELL\PycharmProjects\untitled1\four week\user.info","w",encoding="utf-8")
>>> json.dump(tom,f) #序列化到文件
>>> f.close()
>>> f = open(r"C:\Users\DELL\PycharmProjects\untitled1\four week\user.info","r",encoding="utf-8")
>>> res = f.read()
>>> print(res)
{"tom": {"age": 19, "score": 89}}
>>>
json.load(file) 将file中的内容反序列化返回
>>> f = open(r"C:\Users\DELL\PycharmProjects\untitled1\four week\user.info","r",encoding="utf-8")
>>> res = json.load(f)
>>> print(res)
{'tom': {'age': 19, 'score': 89}}
>>> print(type(res)) #查看res类型
<class 'dict'>
>>>
pickle模块:以二进制序列
pickle.dumps(obj) 将对象obj序列化为二进制bytes类型
例:
>>> print(res)
{'tom': {'age': 19, 'score': 89}}
>>> pic_res = pickle.dumps(res)
>>> print(pic_res,type(pic_res))
b'\x80\x03}q\x00X\x03\x00\x00\x00tomq\x01}q\x02(X\x03\x00\x00\x00ageq\x03K\x13X\x05\x00\x00\x00scoreq\x04KYus.' <class 'bytes'>
>>>
pickle.loads(b_str) 将二进制字符串反序列化为obj对象
>>> print(pic_res,type(pic_res))
b'\x80\x03}q\x00X\x03\x00\x00\x00tomq\x01}q\x02(X\x03\x00\x00\x00ageq\x03K\x13X\x05\x00\x00\x00scoreq\x04KYus.' <class 'bytes'>
>>> res = pickle.loads(pic_res)
>>> print(res,type(res))
{'tom': {'age': 19, 'score': 89}} <class 'dict'>
>>>
pickle.dump(obj,write_file) 将对象obj序列化为二进制后存在文件中
>>> print(res)
{'tom': {'age': 19, 'score': 89}}
>>> f = open(r"C:\Users\DELL\PycharmProjects\untitled1\four week\user.info","wb")
>>> pickle.dump(res,f)
>>> f.close()
>>> f = open(r"C:\Users\DELL\PycharmProjects\untitled1\four week\user.info","rb")
>>> k = f.read()
>>> print(k,type(k))
b'\x80\x03}q\x00X\x03\x00\x00\x00tomq\x01}q\x02(X\x03\x00\x00\x00ageq\x03K\x13X\x05\x00\x00\x00scoreq\x04KYus.' <class 'bytes'>
>>>
pinkle.load(file) 将文件中的二进制反序列化为obj对象
>>> f = open(r"C:\Users\DELL\PycharmProjects\untitled1\four week\user.info","rb")
>>> res = pickle.load(f)
>>> print(res,type(res))
{'tom': {'age': 19, 'score': 89}} <class 'dict'>
>>>
总结:json和pickle都是将对象序列化,不同之处是json是将对象序列化为Unicode字符串,而pickle是将对象序列化为二进制字符串,也就是bytes类型
在不同语言中对数据的处理和认识是不同的,但每种语言都有一个共同的认识,那就是字符串,在跨平台跨语言传递数据时,序列化是非常常见的
python中序列化模块json和pickle的更多相关文章
- python序列化模块json和pickle
序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转 ...
- python 数据序列化(json、pickle、shelve)
本来要查一下json系列化自定义对象的一个问题,然后发现这篇博客(https://www.cnblogs.com/yyds/p/6563608.html)很全面,感谢作者,关于python序列化的知识 ...
- 常用模块一(os模块、序列化模块(json和pickle))
一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.r ...
- 20,序列化模块 json,pickle,shelve
序列化模块 什么叫序列化? 将原本的字典,列表等内容转换成一个字符串的过程叫做序列化. 序列化的目的? 数据结构 通过序列化 转成 str. str 通过反序列化 转化成数据结构. json: jso ...
- 2019-7-18 collections,time,random,os,sys,序列化模块(json和pickle)应用
一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1 y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...
- Python中模块json与pickle的功能介绍
json & pickle & shelve 1. json的序列化与反序列化 json的使用需要导入该模块,一般使用import json即可. json的序列化 方法1:json. ...
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- 序列化模块— json模块,pickle模块,shelve模块
json模块 pickle模块 shelve模块 序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. # 序列化模块 # 数据类型转化成字符串的过程就是序列化 # 为了方便存储和网 ...
- 【转】Python之数据序列化(json、pickle、shelve)
[转]Python之数据序列化(json.pickle.shelve) 本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型 ...
随机推荐
- [C++ Primer Plus] 第3章、处理数据(一)程序清单
一.程序清单3.1(变量的一些知识点) #include<iostream> #include<climits> using namespace std; void main( ...
- 2018年12月25日 圣诞节快乐 生成器plus
import time#导入时间模块 time.sleep(5)#输入间隔时间5秒 def p_bz():#使用函数 生产包子 for i in range(100): yield "包子% ...
- ant_<target>标签含义与使用
<target>标记目标 目标是一个或多个任务的集合,任务是一段可执行的代码:构建文件中包含一个项目,在项目内部声明了所有目标: <target name = "run&q ...
- Spring错误——Spring xml注释——org.xml.sax.SAXParseException; lineNumber: 24; columnNumber: 10; cvc-complex-type.2.3: 元素 'beans' 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”。
背景:配置spring xml,注释xml中文件元素 错误: Caused by: org.xml.sax.SAXParseException; lineNumber: 24; columnNumbe ...
- CTF显隐术:九连环
题目:http://www.shiyanbar.com/ctf/2007 这个也挺基础的,需要注意的是:1.不要因为binwalk扫不出来就以为没有隐藏嵌入数据.2.千万不要暴力破解压缩包,如果是这样 ...
- CSS设置DIV边框为圆角,添加背景色溢出的问题
这么几天需要做一个类似于层级展示的东西,最后一层需要做一些div框来展示数据,我用css设置了div的边框为圆角,但是添加背景色的时候颜色溢出,覆盖了四个角的圆弧,效果如图所示: css代码如下: . ...
- Django2.1.3 smtp 邮件 553报警
用网易邮箱smtp发邮件时候一直报警553权限问题 smtplib.SMTPSenderRefused at: (553, b'Mail from must equal authorized user ...
- Android 虹软2.0人脸识别,注册失败问题 分析synchronized的作用
人脸识别需要init初始化(FaceServer中),离开时需要unInit销毁:当一个含有人脸识别的界面A跳向另一个含有人脸识别的界面B时,由于初始化和销毁都是对FaceServer类加锁(sync ...
- Python 总结一
'''形式参数不占内存,在调用时开辟内存,在函数结束时释放内存默认参数 调用方式:位置参数.关键字参数 *args (元组) **kwargs(字典) 局部变量:在子程序中使用的变量全局变量:glob ...
- 菜鸟脱壳之脱壳的基础知识(四)——利用ESP定律来寻找OEP
.上节说的是单步跟踪法,这节讲的是利用堆栈平衡(ESP定律)来进行脱壳!想必大家都听说过ESP定律这个大名吧!ESP定律运用的就是堆栈平衡原理!一般的加壳软件在执行时,首先要初始化,保存环境(保存各个 ...