用于数据的存取:dump load import json f=open('testseq',encoding='utf-8',mode='w') dict1={'张三':16,'王五':18} json.dump(dict1,f) f.close() s=open('testseq',encoding='utf-8') k=json.load(s) print(k,type(k)) //{'张三': 16, '王五': 18} <class 'dict'> s.close() 用于数据的传输:dumps loads dict2={'张三':16,'王五':18} str_dict2=json.dumps(dict2,ensure_ascii=False) print(str_dict2,type(str_dict2)) //{"张三": 16, "王五": 18} <class 'str'> ret=json.loads(str_dict2) print(ret,type(ret)) // {'张三': 16, '王五': 18} <class 'dict'> pickle模块:只在python中使用,所有数据类型都可以序列化。具体用法和json模块一样
day16 序列化
概念
序列化是指将某种数据类型做一种特殊的字符串形式处理,方便数据类型的存取以及传输。
意义
在程序中,如果需要用到一些数据存放个人信息,比如用户名和密码字典类型,那么会在多种场景下需要用到这个数据。如果将该数据用作全局变量,一方面不安全,另一方面也很不方便,让所有的程序都来调用这个变量不现实。所以需要一个文件专门用来存储该数据类型。但是由于一般情况下从文件中读取出来的都是字符串数据类型,已经不再是原来的字典类型了,导致数据不可用。这个时候就需要用到序列化,通过序列化,可以对数据类型作特殊的序列化处理,存储在文件中,需要用到该数据类型时,通过反序列化就可以还原原有的数据类型。总而言之,一方面为了数据类型的存储,另一反面,为了方便数据的传输。
如何实现序列化
json模块:对多种编程语言通用,只有部分数据类型能序列化。(dict list tuple str int float false true None)
用于数据的存取:dump load import json f=open('testseq',encoding='utf-8',mode='w') dict1={'张三':16,'王五':18} json.dump(dict1,f) f.close() s=open('testseq',encoding='utf-8') k=json.load(s) print(k,type(k)) //{'张三': 16, '王五': 18} <class 'dict'> s.close() 用于数据的传输:dumps loads dict2={'张三':16,'王五':18} str_dict2=json.dumps(dict2,ensure_ascii=False) print(str_dict2,type(str_dict2)) //{"张三": 16, "王五": 18} <class 'str'> ret=json.loads(str_dict2) print(ret,type(ret)) // {'张三': 16, '王五': 18} <class 'dict'> pickle模块:只在python中使用,所有数据类型都可以序列化。具体用法和json模块一样
用于数据的存取:dump load import json f=open('testseq',encoding='utf-8',mode='w') dict1={'张三':16,'王五':18} json.dump(dict1,f) f.close() s=open('testseq',encoding='utf-8') k=json.load(s) print(k,type(k)) //{'张三': 16, '王五': 18} <class 'dict'> s.close() 用于数据的传输:dumps loads dict2={'张三':16,'王五':18} str_dict2=json.dumps(dict2,ensure_ascii=False) print(str_dict2,type(str_dict2)) //{"张三": 16, "王五": 18} <class 'str'> ret=json.loads(str_dict2) print(ret,type(ret)) // {'张三': 16, '王五': 18} <class 'dict'> pickle模块:只在python中使用,所有数据类型都可以序列化。具体用法和json模块一样