博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础学习17----json&pickle&shelve
阅读量:7239 次
发布时间:2019-06-29

本文共 1826 字,大约阅读时间需要 6 分钟。

json和pickle的功能是对数据进行序列化

将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式(如:XML、JSON或特定格式的字节串)的过程称为序列化;反之,则称为反序列化

json模块

对于Python内置的数据类型(如:str, unicode, int, float, bool, None, list, tuple, dict)json模块可以直接进行序列化/反序列化处理

dumps和loads

 

import jsonlist1=[1,2,3,"hello world"]data1=json.dumps(list1)print(data1)#[1, 2, 3, "hello world"]dict1={"one":1,"two":2,"three":3}data2=json.dumps(dict1)print(dict1)#{'one': 1, 'two': 2, 'three': 3}data1=json.loads(data1)print(data1)#[1, 2, 3, 'hello world']data2=json.loads(data2)print(data2)#{'one': 1, 'two': 2, 'three': 3}print(data2["one"])#1

 

dump和load

这两种方法可将序列化的数据存到文本和读取文本中序列化的数据

list1=[1,2,3,"hello world"]with open("listfile","w") as f1:    json.dump(list1,f1)with open("listfile","r") as f2:    data=json.load(f2)print(data)

pickle模块 

 

python的pickle模块实现了python的所有数据序列和反序列化。基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load。

与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。

 

import pickleclass people:    def __init__(self,name,age):        self.name=name        self.age=agesfencs=people("sfencs",19)data=pickle.dumps(sfencs)print(data) #b'\x80\x03c__main__\npeople\nq\x00)\x81q\x01}q\x02(X\x04\x00\x00\x00nameq\x03X\x06\x00\x00\x00sfencsq\x04X\x03\x00\x00\x00ageq\x05K\x13ub.'data=pickle.loads(data)print(data)#<__main__.people object at 0x0000029D8402DDA0>

 

pickle和json同样支持dump,load,dumps,loads方法

shelve模块

shelve是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化

其中key必须是字符串

 

import shelvewith shelve.open("shelvefile") as f:    f["one"]=1    f["two"]=2#这里直接保存到了文件中,生成了3个文件shelvefile.bak,shelvefile.dat,shelvefile.dirwith shelve.open('shelvefile') as f:#只使用shelvefile名字即可    print(f["one"])#1    for key,value in f.items():        print(key, ': ', value)        #one :  1        #two :  2

 

  

参考:

 

转载于:https://www.cnblogs.com/sfencs-hcy/p/9689161.html

你可能感兴趣的文章
Hibernate缓存研究
查看>>
Cesium原理篇:3D Tiles(1)渲染调度
查看>>
neuroph Perceptron Sample
查看>>
关于navicat连接oracle 报 ORA-12737 set CHS16GBK错误的解决方案
查看>>
MEP自定义参数化风机盘管族
查看>>
(android控件)巧用background属性,实现图片可选择效果
查看>>
获取APK文件的签名信息,反射实现
查看>>
Hive On Spark hiveserver2方式使用
查看>>
如何在Android开发中让你的代码更有效率
查看>>
Visual Studio项目的生成事件代码
查看>>
android的消息处理机制(图文+源码分析)—Looper/Handler/Message[转]
查看>>
lightswitch conditional formatting change color
查看>>
發行項帶篩選的合併複製問題之----訂閱者更新導致部份數據丟失
查看>>
Linux/Ubuntu sudo不用输入密码的方法
查看>>
Kinect for Windows 正式发布
查看>>
不适合做管理的人zz
查看>>
数据库索引
查看>>
控件:ScrollView --- 滚动视图
查看>>
Synthetic
查看>>
HDU-1203 I NEED A OFFER! 动态规划 01背包
查看>>