码迷,mamicode.com
首页 > 编程语言 > 详细

python3之序列化(pickle&json)

时间:2017-12-14 14:56:10      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:not   port   编写   传输   open   子集   python对象   数据传输   序列   

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序列化可能还有差异。

 

python3之序列化(pickle&json)

标签:not   port   编写   传输   open   子集   python对象   数据传输   序列   

原文地址:http://www.cnblogs.com/zhangxinqi/p/8034380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!