python序列化与反序列化——json与pickle
Posted cxy-learning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python序列化与反序列化——json与pickle相关的知识,希望对你有一定的参考价值。
一、定义
序列化是指将对象从内存中取出来写入存储区,如txt文件中,反序列则相反。
二、 应用场景
- 跨平台数据传输;
- 保留上一次运行程序时对对象的修改
三、 模块和函数
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的主要内容,如果未能解决你的问题,请参考以下文章