【Python】基础部分 -- 常用模块 -- JSON / PICKLE / shelve 序列化

JSON / PICKLE / shelve 序列化

   1)   序列化的优势

    内存数据序列化的作用:

    1.远程网络传输

    2.不用语言之间的交互规则

 

   2)   序列化与一般数据的区别

    1.纯文本       坏处:不能共享复杂的数据类型

    2.xml,      坏处:占空间大

    3.json     优势:占空间小,可读性强

 

   3)   json 与 pickle的区别

         JSON把内存里的数据类型转变成字符串 

 

    import json
    data = '016546541'
    
file = 'text'
    
json.dump(data, open(file, 'w'))  # json数据存入磁盘
    
lo = json.load(open(file, 'r'))  # 从磁盘读处json数据
    
json.dumps(data)  # 转换数据形式,不存入磁盘
    
lo = json.loads(data)  # 从内存读出json数据
    
print(lo)

 

          PICKLE把内存里的数据类型转变成bytes,

    import  pickle
    data2 = 'print(\'hha\')'
    
pk = open('date.pkl', 'wb')
    pickle.dump(data2, pk)
    pk.close()
    pkl = open('date.pkl', 'rb')
    print(pickle.load(open('date.pkl','rb')))
 

    JSON 支持序列化类型:str, int, tuple, list, dict,支持跨平台,网络用

    PICKLE支持类型:Python里所有数据类型,包括函数,但不支持跨平台,单机用

 

   4)   shelve 连续序列化的pickle

    import shelve
    f = shelve.open('shelve_test'# f相当于一个字典
    
name = 'aasfa'
    
info = 'inforamtion'
    
f['names'] = name  # 持久化列表
    
f['info_dic'] = info
   # 修改
    f['names'] = 'reset'  # 不支持单独修改【‘names’】里的元素
   # 删除
    
del f['names']

    f.close()

   # 查询
    
f.keys()
    f.items()
    f.get('names')
    f.get('info_dic')

posted @ 2018-05-31 17:05  caya  阅读(141)  评论(0)    收藏  举报