20180209-json&pickle&shelve模块
什么是序列化?
序列化就是把内存里的数据类型转成字符串,以使其能够存储到硬盘中或在网络中传输到远程,因为硬盘和网络传输时只接收bytes
用于序列化的两个模块
1. json,用于字符串和python数据类型间的转换
2. pickle,用于python特有的数据类型和python数据类型间进行转换
json模块提供了4个功能:dumps、dump、loads、load 可以跨平台
pickle模块提供了4个功能:dumps、dump、loads、load 只能在python中使用
json用法
import json
data = {
'role': 'Alex',
'life': 50
} # json序列化
json_str = json.dumps(data)
print(json_str,type(json_str))
# 输出
# {"role": "Alex", "life": 50} <class 'str'> # json反序列化
data = json.loads(json_str)
print(data,type(data))
# 输出
# {'role': 'Alex', 'life': 50} <class 'dict'>
配合文件操作的json用法
# 序列化配合文件操作
with open('./tmp/json.pk','w') as fp:
json.dump(data,fp) # 反序列化配合文件操作
with open('tmp/json.pk') as fp:
data = json.load(fp)
print(data,type(data))
# 输出
# {'life': 50, 'role': 'Alex'} <class 'dict'>
pickle用法
import pickle # pickle序列化
pickle_str = pickle.dumps(data)
print(pickle_str,type(pickle_str))
# 输出
# b'\x80\x03}q\x00(X\x04\x00\x00\x00lifeq\x01K2X\x04\x00\x00\x00roleq\x02X\x04\x00\x00\x00Alexq\x03u.' <class 'bytes'> # pickle反序列化
data = pickle.loads(pickle_str)
print(data,type(data))
# 输出
# {'life': 50, 'role': 'Alex'} <class 'dict'>
结合文件操作
# 结合文件操作的pickle序列化
with open('tmp/pickle.pk','wb') as fp:
pickle.dump(data,fp) # 结合文件操作的pickle反序列化
with open('tmp/pickle.pk','rb') as fp:
data = pickle.load(fp)
print(data,type(data))
注意:pickle序列化后不是字符串,而是字节,所以在文件操作的时候,需要注意要使用 'wb' 和 'rb'
shelve用法
import shelve
name = ['alex','sex','test']
info = {'life': 45,'age':28}
# 序列化
s = shelve.open('tmp/shelve')
s['name'] = name
s['info'] = info
s.close() # 反序列化
s = shelve.open('tmp/shelve')
name = s['name']
info = s['info']
print('name:',name,'info:',info)
s.close()
# 输出
# name: ['alex', 'sex', 'test'] info: {'age': 28, 'life': 45}
20180209-json&pickle&shelve模块的更多相关文章
- python序列化: json & pickle & shelve 模块
一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...
- python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则
python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess ...
- day6_python序列化之 json & pickle & shelve 模块
一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...
- Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解
把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json d ...
- json,pickle,shelve模块,xml处理模块
常用模块学习—序列化模块详解 什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化? 你打游戏过程 ...
- json&pickle&shelve模块
之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了 ...
- json & pickle & shelve 模块
JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下: # json序列化 import json,time user={'name':'egon' ...
- Python json & pickle & shelve模块
json & pickle 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇 ...
- Python序列化,json&pickle&shelve模块
1. 序列化说明 序列化可将非字符串的数据类型的数据进行存档,如字典.列表甚至是函数等等 反序列化,将通过序列化保存的文件内容反序列化即可得到数据原本的样子,可直接使用 2. Python中常用的序列 ...
- Python json & pickle, shelve 模块
json 用于字符串和python的数据类型间的转换 四个功能 dumps dump loads load pickle 用于python特有的类型和python的数据类型进行转换 四个功能 dump ...
随机推荐
- Zabbix分布式监控系统实践 自定义配置
https://www.zabbix.com/wiki/templates/start 环境介绍OS: Ubuntu 10.10 Server 64-bitServers:zabbix-server: ...
- Atcoder2134 Zigzag MST
问题描述 We have a graph with N vertices, numbered 0 through N−1. Edges are yet to be added. We will pro ...
- Prometheus + Node Exporter + Grafana 监控主机运行信息
上一篇文章中讲了如何利用Prometheus和Grafana监控SpringBoot应用的JVM信息,这次就来看看如何监控 服务器运行状态,先列出用到的工具: Prometheus node_ex ...
- 对Promise的研究2
3.Promise.prototype.then() Promise 实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的.它的作用是为 Promise ...
- ckeditor粘贴word图片且图片文件自动上传功能
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- discuz x3.2设置注册邮件激活_企业邮箱发送邮件失败
在discuz x2.5邮箱设置里面已经说了很多关于邮件设置和常见问题的处理办法了,今天这里主要是说明下Discuz! 邮件发送失败排查思路,适用于任何板块的Discuz程序. Discuz! 邮件发 ...
- 小陈现有2个任务A,B要完成,每个任务分别有若干步骤如下 一道网上没啥题解的难题(至少我是这么觉得的)
小陈现有2个任务A,B要完成,每个任务分别有若干步骤如下:A=a1->a2->a3,B=b1->b2->b3->b4->b5.在任何时候,小陈只能专心做某个任务的一 ...
- Java多线程常用写法,使用匿名内部类
匿名内部类是基于抽象类和接口而言的. //匿名内部类(解决定义过多文件的问题,标准开发一个类就是一个文件) // new Runnable() { // @Override // public voi ...
- Jsoup获取DOM元素
(1)doc.getElementsByTag(String tagName); (2)doc.getElementById(String id); (3)doc.getElementsByClass ...
- 631D Messenger
题目大意 给你串s和t 但是每个串都被表示为多个二元组(x,y)表示字符x连续出现y次 问t在s中出现了多少次 分析 我们先将s和t每个串中二元组合并 即相邻两个二元组如果字符相等则将它们变为一个 特 ...