Day 21 序列化模块_Json,Pickle,Shelve

时间:2022-08-16 09:18:15

序列化 , 数据类型,列表 元组, 字符串

只有字符串能被写入文件中.

能在网络上传输的只能是bytes - 字符串

把要传输的和要存储的内容转换成字符串.

字符串 转换回 要传输和存储的内容

序列化只有两种作用.

1. 网络传输

2. 数据持久化 -写在文件里

json

pickle

shelve

d = {'key1':'value1','key2':'value2'}
print(d) 答案:{'key1': 'value1', 'key2': 'value2'}
print(str(d),type(str(d))) #序列化

答案:{'key1': 'value1', 'key2': 'value2'} <class 'str'>
print(eval(str(d)),type(eval(str(d))))

答案:{'key1': 'value1', 'key2': 'value2'}, <class 'dict'>

import json
d ={ 'key1':'value1','key2':'value2'}
ret =json.dumps(d) #序列化
print(ret ,type(ret)) #json . 输出结果:{"key1": "value1", "key2": "value2"} <class 'str'>
import json
d ={ 'key1':'value1','key2':'value2'}
ret =json.dumps(d) #序列化
print(ret ,type(ret)) #json .
dic = json.loads(ret)
print(dic,type(dic)) # 反序列化操作 dump load 用在文件操作数据类型的序列化与反序列化上.
 pickle的用法:

Day 21  序列化模块_Json,Pickle,Shelve

拿数据

Day 21  序列化模块_Json,Pickle,Shelve

Day 21  序列化模块_Json,Pickle,Shelve

 Day 21  序列化模块_Json,Pickle,ShelveDay 21  序列化模块_Json,Pickle,ShelveDay 21  序列化模块_Json,Pickle,Shelve

Day 21  序列化模块_Json,Pickle,Shelve

 
import json
data ={ 'username':['李华','二愣子'],'sex':'male','age':}
with open('jason.txt','w',encoding='utf-8') as f :
json.dump(data,f)
# 输出结果到jason.txt 文件中:{"username": ["\u674e\u534e", "\u4e8c\u6123\u5b50"], "sex": "male", "age": 19}
with open('jason.txt','r',encoding='utf-8') as f :
print(json.load(f))
# 输出结果:{'username': ['李华', '二愣子'], 'sex': 'male', 'age': 19}

Json 模块dumps后 是十六进制 文件存储

# with open('pickle_sample','wb') as f:
# pickle.dump(data,f)
# pickle.dump(data,f)
# with open('pickle_sample','rb') as f:
# print(pickle.load(f))
# print(pickle.load(f))

Pickle 模块 dumps后是bytes类型

pickle 模块 dump之后的内容在文件中是乱的 .

Pickle 可以任意的将python中的数据类型序列化 .

Json 只能对列表,字典进行序列化