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 ...
随机推荐
- ASP.NET常用内置对象之——Server
简介 Server对象是HttpServerUtility的一个实例,也是上下文对象context的一个属性,提供用于处理Web请求的Helper方法. 常用成员 一.Server.MapPath() ...
- [转] 你应该知道的应用UI动态设计规则
转自 CocoaChina http://www.cocoachina.com/macdev/uiue/2014/0505/8315.html 你应该知道的应用UI动态设计规则 这篇文章中,我主要阐述 ...
- window.jQuery || document.write("<script src='__PUBLIC__/assets/js/jquery.js'>"+"<"+"/script>")
今天无意中看到这样一段代码 <script type="text/javascript"> window.jQuery || document.write(" ...
- 第三章.搭建MyBatis工程环境
1.数据库的准备: 数据库: create DATABASE mybatis: 数据表: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREM ...
- Linux入门基础介绍
概述: 1. linux是一个开源.免费的操作系统,其稳定性.安全性.处理多并发已经得到业界的认可,目前很多企业级的项目 都会部署到Linux/unix系统上. 2. 常见的操作系统(w ...
- Kali-linux设置ProxyChains
ProxyChains是Linux和其他Unices下的代理工具.它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP.SOCKS4和SOCKS5类型的代理服务器,并且可配置多个 ...
- PHP日志 LOG4PHP 的配置与使用
维护了 一个老项目, 没有日志功能, 就给加了这个log4php, 主要是集成进去很简单,使用起来也够用了. 1.下载log4php 2.创建配置文件 log4php_config.xml < ...
- SpringAop之日志管理
导入的依赖均为JavaWeb界面在线配置代码生成器这篇文章,你只需将这篇文章的maven依赖导入即可. SpringAop利用注解的特性进行日志管理,只需在对应的方法上加上自己编写的注解,即可完美实现 ...
- WinCE下SQLCE数据库开发(VS,VB.net,VC++)
WinCE下SQLCE数据库开发(VS,VB.net,VC++) WinCE下SQLCE数据库开发 微软的SQL Server数据库由于其功能强大.方便使用,因此在很多行业都被广泛应用.基于智能设 ...
- CSS3与页面布局学习总结(四)——页面布局的多种方法
一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的 ...