序列化

序列化   目的
1.以某种储存形式使定义的对象持久化:
2,将对象从一个对象传递到另一个地方
3.使程序更具有维护性
json  提供了四个功能
import json
dumps将字典转换成字符串 储存
dic={'1':2,'2':3,'4':5}
str_dic=json.dumps(dic)  #括号里放字典
print(str_dic)
locals()将字典型字符串转化成字典
n=json.loads(str_dic) #括号里放着字符串字典
print(n)

dump 就是把字典转成字符串储存放着文件当中

lst = {'1':2,'2':3,'4':5}
f = open('test.txt','w',encoding='utf-8')
json.dump(lst,f)
f.close()

local把文件中的字符串型字典拿出来
f = open('test.txt','r',encoding='utf-8')
s = json.load(f)
print(type(s),s[-1])

import pickle

dumps  把字典转成二进制
dic={'1':2,'2':3,'4':5}
pickle_dic=pickle.dumps(dic)
print(pickle_dic)

locals  把二进制转化成字典
dic1=pickle.loads(pickle_dic)
print(dic1)
def func():
    print(111)
f1= pickle.dumps(func)

i = 1234
ff = pickle.dumps(i)
print(ff)
local   dump   文件的转化

f = open('test.txt','wb')
pickle.load(f)

dic = {'1':2,'2':3}
pickle.dump(dic,f)

f1 = open('test.txt','rb')
s = pickle.load(f1)
print(type(s),s)

总结:
json: 序列化
将一个对象转换成一个能够永久存储的内容
将一个对象转换成一个字符串的时候 - - > 序列化 --> dumps(要转换的对象) - - > 字符串
将一个字符串转换成一个对象的时候 - --> 反序列化 --> loads(要转换的字符串) -->对象

将一个对象转换成一个文件的时候 - - > 序列化 --> dump(要转换的对象, 文件句柄) - - > 可见文件
将一个文件转换成一个对象的时候 - --> 反序列化 --> load(文件句柄) --> 对象

pickle: 序列化
将一个对象转换成一个能够永久存储的内容
将一个对象转换成一个字节的时候 - - > 序列化 --> dumps(要转换的对象) - - > 字节
将一个字节转换成一个对象的时候 - --> 反序列化 --> loads(要转换的字节) -->对象

将一个对象转换成一个文件的时候 - - > 序列化 --> dump(要转换的对象, 文件句柄) - - > 不可见文件
将一个文件转换成一个对象的时候 - --> 反序列化 --> load(文件句柄) --> 对象

区别:
json
编程语言中是通用的, json转一些简单的数据
pickle
python自己的, 可以将已知对象转换(lambda除外)
原文地址:https://www.cnblogs.com/LMTlmt/p/10285320.html