Python学习 :json、pickle&shelve 模块
数据交换格式
json 模块
json (JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管 json 是JavaScript的一个子集,但 json 是独立于语言的文本格式,并且采用了类似C语言家族的一些习惯
json 建构于两种结构基础之上:
1、'名称/值'对的集合。在不同的语言中,它被理解为对象(object)、记录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、有键列表(keyed list)或者关联数组(associative array)
2、值的有序列表(An ordered list of values)。在某些语言中,它被理解为数组(array),类似于Python中的类表
json 模块的主要功能:
1、序列化:encoding,把一个Python对象编码转化成JSON字符串
2、反序列化:decoding,把JSON格式字符串解码转换为Python数据对象
序列化的两种方法
# dumps 方法
import json
dic = {'name':'alex','age':'25'}
data = json.dumps(dic)
f = open('test','w')
f.write(data)
f.close() # dump 方法
import json
dic = {'name':'mike','age':'20'}
f = open('test','a')
json.dump(dic,f) # 不用再手动去写入文件中
f.close()
反序列化的两种方法
# loads 方法
import json
f = open('test','r')
data = f.read() # 在json文件中的并不是字典,而是json的一种字符串格式
data = json.loads(data) # 把json数据重新转换成为字典类型
print(data['name']) # load 方法
import json
f = open('test','r')
a = json.load(f) # 不用手动去read json中的数据
print(a['name'])
pickle 模块
对于类和函数对象,json不能进行序列化,可以使用 pickle 模块来进行相应的操作
pickle 模块只能用于Python中,不同版本的Python可能彼此都不兼容,因此,只能用Pickle保存那些不重要的数据
pickle 写入方式:
import pickle def foo():
print('Hello World!') data = pickle.dumps(foo)
f = open('test1','wb')
f.write(data)
f.close()
pickle 的读取方式与 json 模块一致,同为 dump ,dumps 函数
shelve 模块
shelve 模块是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化
shelve 使用方式:
import shelve with shelve.open("shelve_test") as f:
f["name"] = 'alex'
f["age"] = '25'
# 这里直接保存到了文件中,生成了3个文件shelve_test.bak,shelve_test.dat,shelve_test.dir with shelve.open('shelve_test') as f: # 只使用shelvefile名字即可
print(f["name"]) for key, value in f.items():
print(key, ': ', value)
>>> alex
age : 25
name : alex
Python学习 :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 & pickle 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇 ...
- Python json & pickle, shelve 模块
json 用于字符串和python的数据类型间的转换 四个功能 dumps dump loads load pickle 用于python特有的类型和python的数据类型进行转换 四个功能 dump ...
- Python全栈之路----常用模块----序列化(json&pickle&shelve)模块详解
把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json d ...
- Python序列化,json&pickle&shelve模块
1. 序列化说明 序列化可将非字符串的数据类型的数据进行存档,如字典.列表甚至是函数等等 反序列化,将通过序列化保存的文件内容反序列化即可得到数据原本的样子,可直接使用 2. Python中常用的序列 ...
- json,pickle,shelve模块,xml处理模块
常用模块学习—序列化模块详解 什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化? 你打游戏过程 ...
- json&pickle&shelve模块
之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了 ...
- Python(序列化json,pickle,shelve)
序列化 参考:https://www.cnblogs.com/yuanchenqi/articles/5732581.html # dic = str({'1':'111'}) # # f = ope ...
随机推荐
- SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Row-Level Security(行级别安全控制)
SQL Server 2016 CPT3中包含了一个新特性叫Row Level Security(RLS),允许数据库管理员根据业务需要依据客户端执行脚本的一些特性控制客户端能够访问的数据行,比如,我 ...
- pt-mysql-summary
pt-mysql-summary主要用来输出MySQL的基本信息,可以作为数据库巡检以及刚开始熟悉数据库环境时候进行使用: [root@mxqmongodb2 bin]# ./pt-mysql-sum ...
- Python学习---基础函数的学习
1.1. 基础函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 灌输一个概念:Python中函数就是对象,函数和我们之前的[1,2,3],'abc ...
- 安装python File "/usr/bin/pip", line 11, in <module> sys.exit(main()) File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main locale.setlocale(locale.LC_ALL, '') File "/u
$ uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU ...
- Linux:CentOS7卸载mysql
步骤 方法一. 1.查看mysql安装 rpm -qa|grep -i mysql 2.卸载前关闭mysql服务 rpm -ev --nodeps mysql-community-release-el ...
- 简要总结 数据仓库VS数据库
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wl101yjx/article/details/31015367 本文简要总结以下两个问题,旨在高速 ...
- CF1063A Oh Those Palindromes
嘟嘟嘟 只要将每一种字母放一块输出就行了. 证明1:比如 1 2 3 4 5 6,那么这个序列对答案的贡献分别是1和5,2和4 ,3和6……如果重新排列成x x x x o o,会发现对 ...
- 2018.09.23模拟总结(T2)
T1,T3我就不说啦,反正也不会.主要想讲的是T2. T2用了一个神奇的算法:折半搜索. 因为这个坑爹的数据范围告诉我们暴搜或是状压会TLE,而一半刚好能卡过去. 折半搜索其实跟暴搜没什么区别,就是折 ...
- xampp安装及使用时的问题总结
本文主要介绍易错点,具体安装过程可参考链接1 1.首先要以管理员身份运行,否则报错. 2.如果你的网站首页名字不是index,那么你在访问的时候就必须输入你首页的全称. 3.htdocs就是网站的根目 ...
- shiro简单入门介绍
shiro是apache的一个java安全框架 可以完成认证,授权,加密,会话管理,基于web继承,缓存等 功能简介: 从外部来看: shiro架构 Subject:主体,代表了当前“用户”,这个用 ...