python模块-json、pickle、shelve
json模块
用于文件处理时其他数据类型与js字符串之间转换。在将其他数据类型转换为js字符串时(dump方法),首先将前者内部所有的单引号变为双引号,再整体加上引号(单或双)转换为js字符串;再使用时再将js字符串还原为本来的数据(load方法)。
两对方法json.dumps()和json.loads(),json.dump()和json.load()
(在html前端,JSON.stringify(v)可将其他格式数据转化为json字符串,JSON.parse(str)可将json字符串还原为原格式)
但是dump和load不是必须同时使用的,只要字符串满足json规则(引号全部为双引号),可以直接使用load读取。
import json
l=[1,'hello',{'name':'Alex'}]
with open('new.txt','w') as f:
l_str=json.dumps(l) #将列表l转换为js字符串
f.write(l_str) #将字符串写入文本
print(l_str, type(l_str)) #输出[1,"hello", {"name": "Alex"}] <class 'str'>,可以看见原列表中所有的单引号全部变成了双引号
with open('new.txt','r') as f:
l=f.read()
print(l,json.loads(l),type(json.loads(l))) #输出[1,"hello", {"name": "Alex"}] [1,'hello', {'name': 'Alex'}] <class 'list'>
上述最后一行可以看见,由于写入时为js字符串,直接读取时也为js字符串,即引号全部为双引号,而json.loads()是将json处理过的字符串变成了原来的列表,并且处理过的双引号全部变回了单引号
在上述文件中,转换和写操作l_str=json.dumps(l)和f.write(l_str)可以用一步json.dump(l,f)代替
在上述文件中,读和转换操作l=f.read()和json.loads(l)可以用一步json.load(f)代替
pickle模块
pickle的用法类似于json,不同的是json是将其它数据类型与字符串进行转换,而pickle是将其它数据类型与字节进行转换,由于是与字节进行转换,所以打开文件时需要以b的方式。
通过pickle把变量从内存中变成可存储或可传输的过程称之为序列化,反之,把变量内容从序列化的对象重新读取到内存里称之为反序列化。
import pickle
l=[1,'hello']
with open('c.txt','wb') as f:
pickle.dump(l,f)
with open('c.txt','rb') as f:
print(pickle.load(f))
shelve模块
shelve是通过键值对,即字典的形式去存储数据的,键必须为字符串,值可以为任何python数据类型。
shelve只有open和close方法,open的时候参数为文件名,执行之后会生成后缀分别为dat、bak、dir的三个文件
import shelve
s=shelve.open('test') #参数为文件名,执行之后会生成test.dat、test.bak、test.dir,此时s相当于一个孔字典
s['one']=12 #通过字典的方式给赋值
s['two']={'name':'Alice','age':19}
s['three']=[1,'hello']
s.close()
s=shelve.open('test')
print(s['one']) #输出12
print(s['two']['age']) #输出19
s['one']=20 #直接通过字典的方式修改值
s.close()
python模块-json、pickle、shelve的更多相关文章
- python模块--json \ pickle \ shelve \ XML模块
一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- 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 ...
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- python序列化模块 json&&pickle&&shelve
#序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ...
- Python(序列化json,pickle,shelve)
序列化 参考:https://www.cnblogs.com/yuanchenqi/articles/5732581.html # dic = str({'1':'111'}) # # f = ope ...
- 模块 - json/pickle/shelve/xml/configparser
序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...
- python_ 模块 json pickle shelve
一,什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码( ...
- 常用模块(json/pickle/shelve/XML)
一.json模块(重点) 一种跨平台的数据格式 也属于序列化的一种方式 介绍模块之前,三个问题: 序列化是什么? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 反序列化又是什么? 将 ...
- 保存数据到文件的模块(json,pickle,shelve,configparser,xml)_python
一.各模块的主要功能区别 json模块:将数据对象从内存中完成序列化存储,但是不能对函数和类进行序列化,写入的格式是明文. (与其他大多语言交互的类型) pickle模块:将数据对象从内存中完成序列 ...
随机推荐
- js 的基础知识
一.弱类型意识 js变量是没有类型的 var a = 1; //a 就是一个变量 不要提什么类型 变量可以赋任何类型的值 类型仅仅是值的性质 与变量无关 Js的基本类型 变量未赋值时,其值为und ...
- hadoop的两类配置文件及3种启动/关闭方式
hadoop配置文件 默认配置文件:四个模块相对应的jar包中:$HADOOP_HOME/share/hadoop *core-default.xml *hdfs-defa ...
- TCP 123=网络时间协议(NTP),Net Controller
TCP 123=网络时间协议(NTP),Net Controller
- centos 7 yum configuration; yum localinstall
Linux下对于软件包的管理使用rpm管理方式.直接使用rpm包管理工具来进行rpm包的安装,升级,卸载时,对于最让人头疼的莫过与包之间的依赖关系.yum作为一个rpm包前端管理工具,可以自动处理依赖 ...
- Find The Multiple--POJ1426
Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...
- kubernetes实战(十四):k8s持久化部署gitlab集成openLDAP登录
1.基本概念 使用k8s安装gitlab-ce,采用GlusterFS实现持久化(注意PG使用的是NFS存储,使用动态存储重启postgresql的pod后无法成功启动pg,待解决),并集成了open ...
- kettle中源和目标表结构不一致的情况处理
创建数据仓库的过程中,往往会遇到这样的问题,例如:源表由于业务原因新增了字段,而ETL程序中是按照之前的源表结构进行抽取的,那么如果不重新构建ETL程序,新的指标就不会流入DW,问题如下图所示 创建了 ...
- 【深入理解javascript】王福朋,厉害了word哥
学习前端有一段时间了,一直以来也没搞明白js中这个闭包到底是个什么东西,有时候看看别人的博客或者知乎的文章,大概上有个了解,可过一段时间也就忘了.偶然间有幸拜读了博客园-王福朋的这一系列文章<深 ...
- 十天精通CSS3(1)
什么是CSS3? CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能. 目前主流浏览器chrome.safari.firefox.opera.甚至360都已经支 ...
- python对象反射和函数反射
python的对象反射功能,经常在编程时使用.相比较其它的编程语言使用非常方便.反射就是用字符串来操作对象或者类,模块中的成员. 一.对象的反射 反射功能的实现,由这4个内置函数来实现(hasattr ...