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 ...
随机推荐
- js格式化数字或者小数,加入千分符(此次为”,“)
function npChangeNum(num) { var tag = (num || 0).toString().split("."); tag[0] = tag[0].re ...
- C++数组读入MATLAB数据
data = rand(8, 10); fid = fopen('File.data', 'w'); if fid == - 1 error('Cannot open file for writing ...
- vue的响应接口
Vue 可以添加数据动态响应接口. 例如以下实例,我们通过使用 $watch 属性来实现数据的监听,$watch 必须添加在 Vue 实例之外才能实现正确的响应. 实例中通过点击按钮自动加 1.set ...
- Web自动化-浏览器驱动chromedriver安装方法
1.python中安装好selenium包 pip install selenium 2.根据以下驱动对照表下载Chrome对驱动 chromedriver版本 支持的Chrome版本 v2.3 ...
- [CF959E]Mahmoud and Ehab and the xor-MST题解
解法 又是一道结论题? 我的做法比较奇怪且没有证明 #include <cstdio> #include <cmath> #define ll long long int ma ...
- hdu 5511 Minimum Cut-Cut——分类讨论思想+线段树合并
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5511 题意:割一些边使得无向图变成不连通的,并且恰好割了两条给定生成树上的边.满足非树边两段一定在给定生成 ...
- 整数解 (hdu 2092
整数解 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- NuGet-Doc:NuGet.Server
ylbtech-NuGet-Doc:NuGet.Server 1.返回顶部 1. NuGet.Server 2018/03/13 NuGet.Server 是由 .NET Foundation 提供的 ...
- jmeter之登录接口的一次简单压测与分析
前言:登录接口的一次简单压测与分析 1.接口文档 2.配置元件 3.结果分析 1.接口文档 a.拿到接口文档 接口地址:http://localhost:8080/jpress/admin/login ...
- 使用python执行sql语句和外键解析
一.下载并导入pymysql pip install pymysql && import pymysql db=pymysql.connect(host=) #如果报错host大概率因 ...