序列化
序列化 目的 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除外)