一、json
json是所有语言都通用的一种序列化格式 ,只支持 列表、 字典、 字符串、 数字 ,
字典的key必须是字符串
1、dumps、loods
# 在内存中做数据转换 :
# durps 数据类型 转成 字符串 序列化
# loods 字符串 转成 数据类型 反序列化
2、dump、 load
# 直接将数据类型写入文件,直接从文件中读出数据类型
# dump 数据类型 写入 文件 序列化
# load 文件 读出 数据类型 反序列化
3、扩展:特殊的参数
import json dic= {'key':'你好'} print(json.dumps(dic,ensure_ascii=False)) # 格式化查看: dic2 ={'username': ['李华','冯芬'],'sex':'male','age':16} json_dic2= json.dumps(dic2,sort_keys=True,indent=4,separators=(',' , ':'),ensure_ascii=False) print(json_dic2)
二、pickle
import pickle #1.支持在python中几乎所有的数据类型 #2.只能在python中使用 dic = {(1,2,3):('a','b'),1:'abc'} ret = pickle.dumps(dic) #3.dumps 序列化的結果只能是字节 print(ret) #b'\x80\x04\x95\x1f\x00\x00\x00\x00\x00\x00\x00}\x94(K\x01K\x02K\x03\x87\x94\x8c\x01a\x print(pickle.loads(ret)) # {(1, 2, 3): ('a', 'b'), 1: 'abc'} #4.在和文件操作的时候,需要用rb wb的模式打开文件 # dump with open('pickle_file', 'wb') as f: pickle.dump(dic,f) # Load with open('pickle_file','rb') as f: ret = pickle.load(f) print(ret,type(ret)) # {(1, 2, 3): ('a', 'b'), 1: 'abc'} <class 'dict'> #5.可以多次dump和多次lood dic = {(1,2,3):('a','b'),1:'abc'} dic1 = {(1,2,3):('a','b'),2:'abc'} dic2 = {(1,2,3):('a','b'),3: 'abc'} # dump with open('pickle_file', 'wb') as f: pickle.dump(dic,f) pickle.dump(dic1,f) pickle.dump(dic2,f) # Load with open('pickle_file','rb') as f: while 1: try: ret = pickle.load(f) print(ret,type(ret)) # {(1, 2, 3): ('a', 'b'), 1: 'abc'} <class 'dict'> # {(1, 2, 3): ('a', 'b'), 2: 'abc'} <class 'dict'> # {(1, 2, 3): ('a', 'b'), 3: 'abc'} <class 'dict'> except EOFError: break