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

python序列化与反序列化——json与pickle

时间:2018-07-19 16:18:07      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:类型   行数据   结果   http   实现   对应关系   替换   文件中   数据   

一、定义

序列化是指将对象从内存中取出来写入存储区,如txt文件中,反序列则相反。

二、 应用场景

  1. 跨平台数据传输;
  2. 保留上一次运行程序时对对象的修改

三、 模块和函数

1. json

dumps()、dump()(序列化)

loads()、load() (反序列化)

2. pickle

dumps()、dump()(序列化)

loads()、load ()(反序列化)

四、  应用案例

1. pickle

 1 import pickle
 2 
 3 info = {"lyrics": "GeCi",
 4         "song": "GeQu",
 5         "time": 89}
 6 
 7 with open("pickling.txt","wb") as f:  #序列化
 8        f.write(pickle.dumps(info))
 9 
10 with open("pickling.txt", "rb") as f:  #反序列化
11         print(pickle.load(f))

上述代码首先将字典info转化为str类型的对象,然后写入txt文件中,其中,第8行可以替换为

pickle.dump(info,f)

二者实现的效果是一样的,只不过dums直接将对象序列化后写入txt文件中。写入文件的结果是一堆看不懂的东西,如下所示:

技术分享图片

但是这并没有出错,不信,最后用load()函数将其反序列化后在控制台输出结果为:

技术分享图片

同样地,loads()函数可以替换load函数。如下:

 1 print(pickle.loads(f.read())) 

2. json

pickle是python独有的,而json可以实现不同编程语言的数据转换和传输。不同编程语言进行数据传输就需要将自身数据类型转换为一个共同的标准类型,json就是其中一种。json数据类型和python数据类型的对应关系如下所示:

技术分享图片

json的用法与pickle大致相同,不同之处在于读写文件时json的读写模式不是“wb”和“rb”,而是“w”和“r”。

 

python序列化与反序列化——json与pickle

标签:类型   行数据   结果   http   实现   对应关系   替换   文件中   数据   

原文地址:https://www.cnblogs.com/cxy-learning/p/manbaIsBusy.html

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