1

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

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

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

能在网络上传输的只能是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的用法:

 拿数据 

 

 

 

 

 


   

 

 

 

import json
data ={ 'username':['李华','二愣子'],'sex':'male','age':19}
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 只能对列表,字典进行序列化

 

posted @ 2018-03-02 14:58  萌哥-爱学习  阅读(221)  评论(0编辑  收藏  举报