json模块与pickle模块

时间:2019-11-13
本文章向大家介绍json模块与pickle模块,主要包括json模块与pickle模块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

用来传输数据

序列化:把对象(变量)从内存中变成可存储或传输的过程称之为序列化,这个序列化必须得规定格式,我们保存的格式为json文件

反序列化:把json文件从硬盘中读取出来

json文件并不是Python独有的,所有的语言都有json,所有json可以跨平台/语言进行传输数据。在python中只能写入的dict/list/str/int/float/bool/None类型

pickle支持python中任意数据类型,所以不能跨平台使用(因为不同平台的函数不同),并且pickle序列化的过程中是以二进制的形式转化

json

import json
dict = {'name':'nick'}
res = json.dumps(dict)    # 在内存中写数据
print(res,type(res))    
{"name": "nick"} <class 'str'>
res2 = json.loads(res)    # 在内存中读数据
print(res2,type(res2))
{'name': 'nick'} <class 'dict'>
dict = {'name':'nick'}
# 在文件中写数据,生成test.json文件
with open('test.json', 'w', encoding='utf8') as fw:
    json.dump(dict, fw)
# 在文件中读数据
with open('test.json', 'r',encoding='utf8') as fr:
    data = json.load(fr)
print(data)
{'name': 'nick'}

pickle

import pickle
dict = {'name':'nick'}
res = pickle.dumps(dict)    # 在内存中以二进制的形式写数据
print(res)
b'\x80\x03}q\x00X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00nickq\x02s.'
res2 = pickle.loads(res)    # 在内存中读数据
print(res2)
{'name': 'nick'}
dict = {'name':'nick'}
# 因为是以二进制的形式,所以要用wb模式写入test.pkl中,不用指定字符编码
with open('test.pkl', 'wb') as fw:    
    pickle.dump(dict, fw)
# 用rb模式读取test.pkl中数据,不用指定字符编码
with open('test.pkl', 'rb') as fr:    
    data = pickle.load(fr)
print(data)
{'name': 'nick'}

原文地址:https://www.cnblogs.com/863652104kai/p/11852420.html