(1)json和pickle序列化模块
json 和pickle 模块
json和pickle模块下都有4个功能
dumps <---> loads (序列化 <--->反序列化)
dump <---> load (简单写法序列化<---> 简单写法反序列化)
用途:序列化模块
什么是序列化
序列化就是把内存中数据类型转换成一种可以存储到硬盘/基于网络传输的中间格式
反序列化就是将中间格式转成相对应的数据类型
PS:不同平台的数据类型是无法识别的,如果数据要夸平台交互,被其他平台识别,那就要把数据序列化后传输到其他平台,然后该平台再反序列后即可读取
PS:序列化写入的文件是什么类型,反序列化出来就是什么类型
为何要序列化
1. 持久保存状态
2. 数据跨平台交互
如何序列化
json:
优点: 是一种通用的格式
缺点: 只能识别部分python数据类型(dict、list、str、int、float、True\False、None)
PS:json是开发运维中常用模式,而且json只能识别双引号 “ ”
pickle:
优点: 可以识别所有python的数据类型
缺点: 只能被python识别
序列化实例import json序列化
将序列化的结果写入文件
dic={'user':'egon','age':18}
res=json.dumps(dic)
with open('a.json',mode='wt',encoding='utf-8') as f:
f.write(res)
PS:用json模块将字典转换成json格式写入文件这就是一个序列化过程
PS:序列化写入的文件可以使txt文件,也可以是json后缀的文件
从文件中读取内容转换成相关的格式
with open('a.json',mode='rt',encoding='utf-8') as f:
dic=json.loads(f.read())
print(dic,dic['user'])
序列化并且写入文件(简写法)
dic={'user':'egon','age':18}
with open('b.json',mode='wt',encoding='utf-8') as f:
json.dump(dic,f) #这一步就是先把dic做了json.dumps,然后执行了f.read(),最后把内容写入文件
反序列化读取文件(简写法)
with open('b.json',mode='rt',encoding='utf-8') as f:
res= json.load(f) #这一步就是先执行了f.read(),然后执行了json.load反序列化操作
print(res)
eval内置函数(无法用作反序列化)
原理就是把python中内置表达式运行一下,什么是python内置表达式,就是如1+2python中会得到一个3,所以做了加法运算,又如[1,2,3],python中会得到一个liest
with open('c.txt',mode='rt',encoding='utf-8') as f:
dic_str=f.read()
dic=eval(dic_str)
print(dic['aaa'])
PS:由于eval转换只是把文件的内容读取然后用python解释器运行,并没有做任何平台类型对应的反序列化,单纯的把表达式拿出来运行,所以会报错,导致读取的代码无法运行
pickle序列化与反序列化
json.dumps({1,2,3,})
import pickle
s={1,2,3}
res=pickle.dumps(s)
print(res,type(res))
with open('e.pkl',mode='wb') as f:
f.write(res)
PS:pickle序列化是将文件转成二进制,读取时候一定要以b模式读取
pikle模块反序列化
with open('e.pkl',mode='rb') as f:
data=f.read()
res=pickle.loads(data)
print(res,type(res))
JSON和Python中类型对应

(1)json和pickle序列化模块的更多相关文章
- (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- json和pickle序列化模块
一.json序列化模块 1.序列化:将内存数据转成字符串加以保存. 2.反序列化:将字符串转成内存数据加以读取. data = { '北京':{ '五道口':{ 'sohu':'引擎', } } } ...
- json and pickle 序列化
前言 文件只能存储字符串.二进制,若把内存的数据对象存到硬盘 从硬盘里读取数据,里面不止是字符串的类型,因此用到了json and pickle 序列化 json序列化 作用:用于不同语言进行的数 ...
- json、pickle\shelve模块(超级好用~!)讲解
json.pickle模块讲解 见我前面的文章:http://www.cnblogs.com/itfat/p/7456054.html shelve模块讲解(超级好用~!) json和pickle的模 ...
- day14-Python运维开发基础(内置函数、pickle序列化模块、math数学模块)
1. 内置函数 # ### 内置函数 # abs 绝对值函数 res = abs(-10) print(res) # round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数,则进一!) 奇进 ...
- collections queue、os、datetime,序列化(json和pickle)模块
目录 Collections 模块 1.nametuple 2.deque(双端队列) 3.双端队列(deque): 4.Odereddict(有序字典): 5.Defaultdict(默认字典,首字 ...
- Python的json and pickle序列化
json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...
- Python 入门基础14 --time、os、random、json、pickle 常用模块1
今日内容: 一.常用模块 2019.04.10 更新 1.time:时间 2.calendar:日历 3.datetime:可以运算的时间 4.sys:系统 5.os:操作系统 6.os.path:系 ...
随机推荐
- Unity3D中人物模型的构成
1.动画: 2.骨骼: 就是一些 Transform 组件,没有其他组件,它们会根据动画的要求而进行运动. 3.皮肤: 其上的 SkinnedMeshRenderer 关联了 网格.骨骼.材质 三个组 ...
- Unity动态创建FBX模型配置文件的存放路径
创建前目录结构: 创建后的目录结构: using System.Collections; using System.Collections.Generic; using UnityEngine; us ...
- Anagram 由颠倒字母顺序而构成的字
2018-07-15 19:23:08 Valid Anagram 问题描述: 问题描述: 可以使用map来记录各个字符出现的个数,在O(n)的时间复杂度内完成,当然也可以使用排序算法在O(nlogn ...
- linux下ssh公钥验证的设置和远程登录
1.第一步 在自己本机,通过工具生成一对公私钥对,对应id_rsa/id_rsa.pub 2.第二步 修改服务器配置 1)复制id_rsa.pub公钥内容 将文件内容追加到~/.ssh/ ...
- hdu-1850-nim
Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32 ...
- 联想笔记本V470安装Win8.1 X64位系统,关机黑屏、电源灯亮
以前的WIN7 X86系统用了很长时间了,软件业装了很多,现在使用的时候就有点卡了,最近决定重装个系统,后台发现开发的有一个东西要求WIN8 X64位的,就下载了一个准备直接安装了,也从此开始了整整2 ...
- C#加密方法汇总(SHA1加密字符串,MD5加密字符串,可逆加密等)
using System;using System.Collections.Generic;using System.Text; namespace StringEncry{ class Encode ...
- Linux中的yum是什么?如何配置?如何使用?
yum,是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow do ...
- HTML <a> 标签的伪类
伪类的语法: selector : pseudo-class {property: value} CSS 类也可与伪类搭配使用. selector.class : pseudo-class {prop ...
- spring cloud学习(三)使用Ribbon实现客户端负载均衡
使用Ribbon实现客户端的负载均衡 * 个人博客空间 : https://zggdczfr.cn/ * Ribbon Spring Cloud Netflix Ribbon 是一个客户端负载均衡的组 ...