day23 序列化模块
概念:
序列化 -- 其他数据类型转换成一个字符串数据类型
反序列化 -- 字符串转换成其他数据类型
序列 -- 字符串
必须要转换成字符串的场景:
往文件里面写数据的时候只能写字符串,不能写字典的
网络传输的时候只能传bytes,字典也不能直接转换成bytes
可以用到的模块:
json 非常重要的一个模块,非常非常
通用的序列化格式,不仅仅是局限于python,优点就是很通用
只有很少的一部分数据类型可以序列化,局限性比较大
pickle 仅次于json
所有的python的数据都可以序列化
问题在于,pickle序列化的内容只有python可以理解
而且,反序列化依赖代码本地存在,不存在则无法解析
shelve python3 里面新加的,特点是好操作,但是实用性就一般
有个序列化句柄,很方便使用读写直接操作
新加的,存在一些小问题
json '{""}' json
可转:
数字 字符串 列表 字典 元祖
不可转:
集合
特殊改变:
会将字符串改成双引号,字典里面的单引号就会改成双
元祖的序列化会被变成列表,本身是元祖的序列后再反序列化便不会来元祖就变成列表了
直接写内存里面的操作
序列化方法:dumps
反序列化方法:loads
import json
dic = {"k1":"v1"}
print(type(dic),dic) # <class 'dict'> {'k1': 'v1'}
strd = json.dumps(dic)
print(type(strd),strd) # <class 'str'> {"k1": "v1"}
dicd = json.loads(strd)
print(type(dicd),dicd) # <class 'dict'> {'k1': 'v1'}
往文件里面写的操作
一次性写进去一次性读出来
要不每次写一行,每次读一行,不然会报错
# dump 往文件里面写
import json
dic = {"k1":"v1"}
f = open("fff","w",encoding="utf-8")
json.dump(dic,f)
f.close() # load 从文件读
f = open("fff")
res = json.load(f)
f.close()
print(type(res),res)
pickle
用法同jons,提供dump,load,dumps,loads方法
但是pickle序列化后会变成tyles类型,无法看出来源内容但是不影响你其他操作
因为是bytes类型,因此文件操作需要用wb,rb的类型进行操作
pickle可以做任何任何数据类型,可以对集合进行序列化反序列化
比jons还要有一点,他可以分别dump load的
# shelve 只提供一个open方法,通过key可以写入或者获取到内容
import shelve
f = shelve.open("shelve_file")
f["key"] = {"int":10,"float":9.5,"string":"sda"}
f.close() import shelve
f1 = shelve.open("shelve_file")
exiting = f1["key"]
f1.close()
print(exiting) # writeback 不设置的话是没办法修改文件的
# 不设置无法感知到修改,但是设置这个会对运行造成一定的资源占用和影响
import shelve
f1 = shelve.open('shelve_file')
print(f1['key'])
f1['key']['new_value'] = 'this was not here before'
f1.close() f2 = shelve.open('shelve_file', writeback=True)
print(f2['key'])
f2['key']['new_value'] = 'this was not here before'
f2.close()
day23 序列化模块的更多相关文章
- day23 Pyhton学习 昨日回顾.re模块.序列化模块
一.昨日回顾 #__file__查看当前文件所在的绝对路径 #time 时间模块 time.time 获取当前时间戳时间 字符串->time.strptime->结构化->mktim ...
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- sys模块和序列化模块
import sysprint(sys.version) #查看当前pycharm版本print(sys.path )#返回模块的搜索路径print(sys.platform )#返回操作系统的版本p ...
- day 20 - 1 序列化模块,模块的导入
序列化模块 首先我们来看一个序列:'sdfs45sfsgerg4454287789sfsf&*0' 序列 —— 就是字符串序列化 —— 从数据类型 --> 字符串的过程反序列化 —— 从 ...
- python之序列化模块、双下方法(dict call new del len eq hash)和单例模式
摘要:__new__ __del__ __call__ __len__ __eq__ __hash__ import json 序列化模块 import pickle 序列化模块 补充: 现在我们都应 ...
- 4-20模块 序列化模块 hashlib模块
1,模块,py文件就是模块,py之所以好用就是模块多. 2,模块的分类: 1,内置模块,python 安装时自带的模块 2,扩展模块,别人写好的,需要安装之后,可以直接使用.itchat微信模块, b ...
- Python内置模块之序列化模块
序列化模块 json dumps loads dump load pickle dumps loads dump load shelve json 1: dumps/loads import json ...
- 序列化模块— json模块,pickle模块,shelve模块
json模块 pickle模块 shelve模块 序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. # 序列化模块 # 数据类型转化成字符串的过程就是序列化 # 为了方便存储和网 ...
- python 常用模块(一): os模块,序列化模块(json模块 pickle模块 )
1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...
随机推荐
- Luogu4423 BJWC2011 最小三角形 平面最近点对
传送门 题意:给出$N$个点,求其中周长最小的三角形(共线的也计算在内).$N \leq 2 \times 10^5$ 这道题唤起了我对平面最近点对的依稀记忆 考虑平面最近点对的分治,将分界线两边的求 ...
- Luogu1979 NOIP2013D2T3 华容道 搜索、最短路
题目传送门 题意:给出一个$N \times M$的棋盘,棋盘上有一些块可以移动,有一些块无法移动.$Q$次询问,每一次询问给出三个块$a,b,c$,将$a$块变为空格,空格旁边可移动的块可以与空格交 ...
- 如何构造树状 JSON 数据 JSON-Tree
十年河东,十年河西,莫欺骚年穷...打错一个字哈.~_~ 接着上一篇博客,上一篇博客是=使用数据库结合LINQ构造的,为了方便理解,本篇采用泛型分组进行构造. 有兴趣的小虎斑可以参考上一篇博客:如何构 ...
- 汇编 指令lodsb,lodsw,lodsd
知识点: 汇编指令 lodsb,lodsw,lodsd 一.汇编指令LODSB //scasb scasw scasd //stosb stosw stosd 1. __asm lodsb //作用 ...
- sql语句——行列互换
SELECT 年份, SUM(case when 季度=1 then 销量 else 0 end) as 一季度, SUM(case when 季度=2 then 销量 else 0 end) as ...
- Nagios图像绘制插件PNP4Nagios部署和测试
注:本篇博客Nagios版本Nagios-3.5.1 1. 概述2. 关于PNP4Nagios3. 部署PNP4Nagios3.1 下载PNP4Nagios3.2 编译安装3.3 目录文件说明4. 配 ...
- Dubbo(四) Dubbo-Admin项目 Dubbo管理台
前言 在dubbo项目中,有注册中心,消费者,提供者就足以构成一个完整的项目了.但是仅仅有这三个角色,很难对整个项目状态有直观的了解,以及对项目操作. 因此早有前辈对此原因作出了贡献——一个通用的du ...
- 小程序encryptedData
准备知识: Base64编解码 AES算法.填充模式.偏移向量 session_key会话密钥,以及怎么存储和获取 以上3点对于理解解密流程非常重要. 根据官方文档,我梳理了大致的解密流程,如下: 小 ...
- “耐撕团队”部署并测试onezero团队记帐本项目
耐撕团队 对onezero团队记帐本项目的部署并测试 测试指标参见下面给出的博客: http://www.ltesting.net/ceshi/ceshijishu/xncs/2014/1030/20 ...
- 《软件工程》小组团队项目-小学生四则运算APP(First Sprint)
<软件工程>团队项目我们小组选择了小学生四则运算APP,在上学期原有的项目基础上进行更新升级.(自我感觉我们团队上学期的小学生四则运算APP是较为成功且实用的,不过这学期学习到了新的知识, ...