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的更多相关文章

  1. python序列化模块json和pickle

    序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转 ...

  2. python 数据序列化(json、pickle、shelve)

    本来要查一下json系列化自定义对象的一个问题,然后发现这篇博客(https://www.cnblogs.com/yyds/p/6563608.html)很全面,感谢作者,关于python序列化的知识 ...

  3. 常用模块一(os模块、序列化模块(json和pickle))

    一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.r ...

  4. 20,序列化模块 json,pickle,shelve

    序列化模块 什么叫序列化? 将原本的字典,列表等内容转换成一个字符串的过程叫做序列化. 序列化的目的? 数据结构 通过序列化 转成 str. str 通过反序列化 转化成数据结构. json: jso ...

  5. 2019-7-18 collections,time,random,os,sys,序列化模块(json和pickle)应用

    一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1  y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...

  6. Python中模块json与pickle的功能介绍

    json & pickle & shelve 1. json的序列化与反序列化 json的使用需要导入该模块,一般使用import json即可. json的序列化 方法1:json. ...

  7. python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)

    一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...

  8. 序列化模块— json模块,pickle模块,shelve模块

    json模块 pickle模块 shelve模块 序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. # 序列化模块 # 数据类型转化成字符串的过程就是序列化 # 为了方便存储和网 ...

  9. 【转】Python之数据序列化(json、pickle、shelve)

    [转]Python之数据序列化(json.pickle.shelve) 本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型 ...

随机推荐

  1. 变量和关系符和JAVA基本类型笔记与常考面试题

    变量的类型:数值型:整型(byte,short,int,long).浮点型(float,double)非数值型:布尔类型(boolean),字符型(char),字符串类型(String),其他引用型 ...

  2. 《温故而知新》JAVA基础四

    类的封装 定义:将类的一些信息隐藏起来,不允许外部的程序直接的访问,而是通过该类提供的一些方法来获取 好处:只能通过特定的法方法访问数据,保护了数据, 实现封装的步骤: 修改属性的可见性:(一般类属性 ...

  3. freecodecamp数字转化成罗马数字

    做数字转罗马数字时,用到了贪心算法,很好用,记录一下,有时间系统的学一下 罗马数字的规则: 罗马数字网址 1 5 10 50 100 500 1000 I V X L C D M1 1当一个符号在一个 ...

  4. [原][工具][windows10安装][0x800F081F]windows 10 如何离线安装.net framework3.5 || 安装出现错误代码0x800F081F时如何解决

    参考解决方案:https://zhidao.baidu.com/question/1896669183365806820.html?fr=iks&word=win10%B0%B2%D7%B0+ ...

  5. 封装axios在vue-cli项目中便捷使用

    首先创建一个vue-cli搭建起来的vue项目这个不用多说了. 安装axios,使用npm install axios --save命令安装依赖,这时候项目的package.json文件中的" ...

  6. caffe提取每一层中的特征,在matlab或python查看

    参考博客: http://blog.csdn.net/abc8730866/article/details/52522843 http://blog.csdn.net/lijiancheng0614/ ...

  7. VXLAN, 一种叠加在L3网络上的L2网络

    这几天看了下RFC7348,顺便翻译了一下,根据自己理解做了注解 虚拟化及租户隔离 服务器虚拟化增加了对物理网络基础设施的需求,服务器有多个虚机,要求交换机支持更大的MAC地址表. 在数据中心场景下, ...

  8. ionicAPP打开第三方APP

    近来,碰到一个问题,需要在ionicAPP中打开第三方APP 然后,就找资料,发现了个比较好的解决方案 可以参考:https://blog.csdn.net/a727911438/article/de ...

  9. python中的进程池和线程池

    Python标准模块-concurrent.futures #1 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ...

  10. linux grep find查找文件夹、代码中的某行/字符串

    本文转载于:https://blog.csdn.net/Mr_Cat123/article/details/80541658 在Linux中,由于文件很多,代码很长,可能我们只知道其中的一两个字符串, ...