python学习笔记 day20 序列化模块(二)
pickle
可以将任何数据类型转为字符串;但是pickle之后的结果也只有python可以看懂,而且反序列化依靠python代码;
pickle 和 json 很像 都是有dumps loads dump 和 load 四个方法;
但是 pickle 序列化之后的结果是一串二进制(bytes类型)所以pickle 在使用 dump 和 load 进行和文件相关的操作时 需要以二进制的方式打开文件,加上b;
1. pickle.dumps()---将任何数据类型进行序列化(pickle序列化的结果是bytes类型)
pickle.loads()---反序列化,转回原来的数据类型;
import pickle dict={'a':1,'b':2,'c':3} print(dict,type(dict)) str_dic=pickle.dumps(dict) # 使用pickle.dumps()将字典序列化 print(str_dic,type(str_dic)) dic_2=pickle.loads(str_dic) print(dic_2,type(dic_2))
运行结果:
2. pickle.dump() -----文件操作有关,注意此时文件必须以二进制方式打开,序列化;
pickle.load()--- 反序列化,文件必须以二进制方式打开;
pickle.dump()和 pickle.load() 可以对多个数据类型进行写入文件操作,然后一个一个读出来,也就是支持多次dump 和 多次load (json.dump() 和 json.load()是不直接支持这种操作的)
import pickle dic={'a':1,'b':2,'c':3} f=open('info','wb') # pickle.dump()在对数据类型进行序列化时,文件比如以二进制方式打开,但是encoding=utf-8就不需要了,因为本身bytes类型就是utf-8 pickle.dump(dic,f) # pickle.dump()是没有返回值的,但是pickle.dumps() pickle.loads() pickle.load()都有返回值 f.close() f=open('info','rb') # pickle.load()在进行反序列化时,文件也必须是二进制方式打开; dic_2=pickle.load(f) print(dic_2,type(dic_2)) f.close()
运行结果:
然而此时dump进文件的内容是看不懂的~并且会生成三个文件:
再来看pickle.dump() pickle.load() 多次dump 和 多次load 的情况(json.dump() 和 json.load()是不支持的)
import pickle import time struct_time1=time.localtime(1600000000) # 这次使用的数据类型是结构化元组(struct_time数据类型) struct_time2=time.localtime() f=open('info','wb') pickle.dump(struct_time1,f) # 对struct_time这种数据类型进行多次dump pickle.dump(struct_time2,f) f.close()f=open('info','rb') struct_time1=pickle.load(f) # 对刚才序列化之后的结果多次load struct_time2=pickle.load(f) print(struct_time1,type(struct_time1)) print(struct_time2) print(struct_time1.tm_year) print(struct_time2.tm_year)
运行结果:
转载于:https://www.cnblogs.com/xuanxuanlove/p/9650834.html
python学习笔记 day20 序列化模块(二)相关推荐
- python学习笔记 day20 常用模块(六)
序列化模块 在讲序列化模块之前,先来看序列化的概念: 我们在进行文件存储时 用的都是str字符串,但是在网络上传输时都是采用bytes类型: 序列化: 数据类型--->字符串类型 反序列化: 字 ...
- python学习笔记4(模块
python学习笔记4(模块) 一.模块 1.1 import语句 1.2 __name__属性 1.3 dir()函数 1.4 包 2.1 导入特定模块: 二.输入与输出 2.1 format使用 ...
- Python学习笔记__5章 模块
# 这是学习廖雪峰老师python教程的学习笔记 1.概览 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在Python中,一个.py文件就称之为 ...
- Python学习笔记--day09 函数 模块 (文件、路径操作)
第二模块 函数&模块 第一模块主要是学习python基础知识,从第二模块开始就可以通过程序去解决工作中实际的问题. 函数,一个用于专门实现某个功能的代码块(可重用). 内置函数 len.bin ...
- python 学习笔记8 (模块)
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...
- python学习笔记之常用模块用法分析
内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得 ...
- Python学习笔记之常用模块总结,持续更新...
阅读目录 1. 时间模块--datetime 2. 文件目录操作模块--os 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经 ...
- Python学习笔记之函数(二)
一.函数返回值 1.什么是返回值:函数返回的值被称为返回值.在函数中,可使用return语句将值返回到调用函数的代码行.这样,我们可以在函数方法体下实现一些小模块的功能,并返回,从而简化主程序的代码. ...
- Python学习笔记之字典(二)
遍历字典:一个Python字典可能包含很多个键值对,在需要获取其数据时,就需要对这个进行遍历,Python支持对字典遍历.字典可用于以各种方式存储信息,其中有多种遍历字典的方式:可遍历字典的所有键值对 ...
最新文章
- Firefox显示 您的链接不安全 的解决办法
- SQLSERVER2000同表数据复制(部分复制)
- 改变MATLAB仿真出来的图的线条颜色表
- 深度学习数学基础(一)~卷积
- php表单数量,php – 解析具有未知数量字段的表单
- C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式类和输入序列类型
- 如何修改snmp的监听端口
- 前端 --- 关于DOM的介绍
- Gradle 工具的源码研究
- [转]Install Windows Server 2012 in VMware Workstation
- libevent和基于libevent的网络编程
- linux bogomips,内核探索:Linux BogoMips 探秘
- VirusTotal 共享8000万勒索软件样本分析数据库
- OS X中的bundle
- 第27课 数组的本质分析
- PLSQL 的安装与简单使用
- 一台电脑绿色安装多个版本google Chorme方案
- 关于bios+mbr还原uefi+gpt的系统后,出现进不去系统的问题
- 数据洪流时代,企业转型需要修建自己的“都江堰”
- 原创 | SpringBoot版本竟然引发这种问题,让我吐血三升!
热门文章
- JS中find(), findIndex(), filter(), forEach(), some(), every(), map()方法
- 解决:EXCEL复制粘贴,精度丢失
- Tomcat源码调试环境搭建
- 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-2
- 放肆地使用UIBezierPath和CAShapeLayer画各种图形
- 二维数组求最大子矩阵的和
- 【python】 字符串转小写(含汉字等时仍work)
- 《Orange’s 一个操作系统的实现》3.保护模式1----pm.inc分析
- apache默认网站
- Docker 持久化存储