Python json和pickle模块

时间:2022-03-11 22:43:50

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

dumps和dump函数。两个函数的唯一区别就是dump把python对象转换成json对象或pickle对象生成一个fp的文件流,而dumps则是生成了一个字符串:

json对象或pickle对象转换成python对象的一个过程,常用的两个函数是loads和load函数。区别跟dump和dumps是一样的。

json模块:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

python类型数据和JSON数据格式互相转换

Python json和pickle模块

json序列化:

import json
dict_1 = {'a':1,'b':2} fq = open('yourapp.log','w')
fq.write(json.dumps(dict_1))
fq.close()

json反序列化:

import json

with open('yourapp.log','r') as fq:
dist_1 = json.loads(fq.read())
print(dist_1)
print(type(dist_1))

pickle模块:

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

pickle序列化:

import pickle

def yujian():
return 'I wait for people, how far is she in the future?' dict_1 = {
'name':'Angle',
'age':'',
'func':yujian
} with open('mydream','wb') as aq:
aq.write(pickle.dumps(dict_1))

pickle反序列化:

import pickle

def yujian():
return 'I wait for people, how far is she in the future?' if __name__ == "__main__":
with open('mydream','rb') as aq:
dict_1 = pickle.loads(aq.read())
print(dict_1['func'](),dict_1['name'])

JSON和pickle模块的区别

1、JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。

2、JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异