python3之序列化(pickle&json)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python3之序列化(pickle&json),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1831字,纯文字阅读大概需要3分钟。
内容图文
1、pickle模块
python持久化的存储数据:
python程序运行中得到了一些字符串,列表,字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。python模块大全中pickle模块就排上用场了, 他可以将对象转换为一种可以传输或存储的格式。
pickle模块将任意一个python对象转换成一系统字节的这个操作过程叫做串行化对象。
python的pickle模块实现了python的所有数据序列和反序列化。基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load。cPickle是pickle模块的C语言编译版本相对速度更快。
与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。
import pickle data2 = [1,2,3,4] det_str = pickle.dumps(data2) print(det_str) #output: 输出为二进制格式 b‘\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.‘#将数据序列化后存储到文件中 f = open(‘test.txt‘,‘wb‘) #pickle只能以二进制格式存储数据到文件 data = {‘k1‘:‘python‘,‘k2‘:‘java‘} f.write(pickle.dumps(data)) #dumps序列化源数据后写入文件f.close() #反序列化读取源数据import pickle f = open(‘test.txt‘,‘rb‘) da = pickle.loads(f.read()) #使用loads反序列化print(da)
dumps和dump,load和loads的区别:
dumps是将对象序列化
dump是将对象序列化并保存到文件中
loads将序列化字符串反序列化
load将序列化字符串从文件读取并反序列化
import pickle data1 = [1,‘a‘,2,‘b‘,3,‘c‘] pi = pickle.dumps(data1) #序列化对象print(pi) print(pickle.loads(pi)) #反序列化对象 f = open(‘test1.txt‘,‘wb‘) data2 = [‘py‘,‘th‘,‘on‘,123] pickle.dump(data2,f) #序列化对象到文件 f = open(‘test1.txt‘,‘rb‘) red = pickle.load(f) #从文件中反序列化对象print(red)
2、json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
data1 = [1,‘a‘,2,‘b‘,3,‘c‘] pi = json.dumps(data1) print(pi) print(json.loads(pi)) f = open(‘test1.txt‘,‘w‘) #与pickle不同的是存储时不使用二进制存储,而使用str data2 = [‘py‘,‘th‘,‘on‘,123] json.dump(data2,f) f = open(‘test1.txt‘,‘r‘) red = json.load(f) print(red)
3、json与pickle模块的区别
1、JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。
2、JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异。
原文:http://www.cnblogs.com/zhangxinqi/p/8034380.html
内容总结
以上是互联网集市为您收集整理的python3之序列化(pickle&json)全部内容,希望文章能够帮你解决python3之序列化(pickle&json)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。