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 ...
随机推荐
- Oracle从入门到精通 限定查询和排序查询的问题
视频课程:李兴华 Oracle从入门到精通视频课程 学习者:阳光罗诺 视频来源:51CTO学院 知识点 SQL语句的执行顺序 限定符号的使用. 具体内容: 如果想要对所选择的数据进行控制,就可以使 ...
- Service Discovery in WCF 4.0 – Part 1 z
Service Discovery in WCF 4.0 – Part 1 When designing a service oriented architecture (SOA) system, t ...
- 打包python到exe
#!/usr/bin/python # -*- coding:utf-8 -*- import distutils import py2exe from distutils.core import s ...
- February 22 2017 Week 8 Wednesday
There is only one happiness in life, to love and be loved. 生命中只有一种幸福,爱与被爱. If you think you are not ...
- RequireJS进阶-模块的优化及配置的详解
概述 关于RequireJS已经有很多文章介绍过了.这个工具可以将你的JavaScript代码轻易的分割成苦干个模块(module)并且保持你的代码模块化与易维护性.这样,你将获得一些具有互相依赖关系 ...
- hdu-2837 Calculation---指数循环节
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2837 题目大意: 已知f(0) = 1,0^0 =1,[注意,0的其他任意次方为0,虽然题没有直接给 ...
- oracle 10g将数据导入到指定表空间的步骤
--创建临时表空间 create temporary tablespace yhtemp tempfile 'D:/oracle/oradata/Oracle10g/yhtemp.dbf' size ...
- websphere部署中文乱码问题
WebSphere上面的java虚拟机存在默认编码方式,默认为ISO-8859-1. 在JAVA虚拟机的定制属性页面上,添加如下内容: 1.修改服务器编码类型: (1)前台修改方法: 服务器-> ...
- Spring Framework5.0 学习(4)—— 基本概念
1.0 控制反转(IOC)/依赖注入(DI) 通过依赖注入(DI),对象的依赖关系将由负责协调系统关系中各个对象的第三方组件在创建对象是设定.对象无需自行创建或管理它们的依赖关系——依赖关系将被自动 ...
- jsp 页面显示格式化的日期
在页面引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 使用 ...