一、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
本文介绍了Python中JSON和pickle两种数据序列化方法,包括json的dumps和loads操作,以及pickle的序列化、反序列化特点,以及在文件操作中的使用。
1105

被折叠的 条评论
为什么被折叠?



