json,pickle模块

json

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

序列化

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

反序列化

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

1.dumps / loads

dic = {'name': 'lilei'}

res = json.dumps(dic)
print(res, type(res))

res = json.loads(res)
print(res, type(res))
{"name": "lilei"} <class 'str'>
{'name': 'lilei'} <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': 'lilei'}

pickle

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

1.dumps / loads

import pickle

def func():
    print('f1')
    
res = pickle.dumps(func)
print(res)
pickle.loads(res)()
b'x80x03c__main__
func
qx00.'
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
原文地址:https://www.cnblogs.com/lucky75/p/10999906.html