day25-3 json,pickle模块

时间:2022-12-30 08:34:44

json

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

序列化

  • 保存数据(从内存到硬盘这个过程叫做序列化,这个序列化必须得规定格式)
  • 这里保存的格式为json

反序列化

  • 把json文件从硬盘中读取到内存

1.dumps / loads(了解,没用)

dic = {'name': 'nick'}

res = json.dumps(dic)
print(res, type(res)) res = json.loads(res)
print(res, type(res))
{"name": "nick"} <class 'str'>
{'name': 'nick'} <class 'dict'>

2.dump / load(重要)

with open('test.json', 'w', encoding='utf-8') as fw:
json.dump(dic, fw) with open('test.json', 'r', encoding='utf-8') as fr:
data = json.load(fr) print(data)
{'name': 'nick'}

pickle

  • pickle也是序列化与反序列化的过程
  • pickle支持python中的任意数据类型,所以不能跨平台(不同平台的函数一定是不同的)
  • pickle模块序列化过程是以二进制形式来进行转化的

1.dumps / loads(了解,没用)

import pickle

def func():
print('f1') res = pickle.dumps(func)
print(res)
pickle.loads(res)()
b'\x80\x03c__main__\nfunc\nq\x00.'
f1

2.dump/load(重要)

with open('test.pickle', 'wb') as fw:   # 格式为pkl也可以
pickle.dump(func, fw) with open('test.pickle', 'rb') as fr:
data = pickle.load(fr) data()
f1