把内存数据转成字符,叫序列化,dump,dumps

把字符转成内存数据类型,叫反序列化load,loads

dumps:仅转成字符串

dump不仅能把对象转换成str,还能直接存到文件内

json.dumps   json.loads

1.把你的内存数据,通过网络,共享给远程其他人

2.定义了不同语言之间的交互规则

  a.纯文本,缺点:不能共享复杂的数据类型,比如字典

  b.xml ,缺点:占空间大

  c.json,优点,简单,可读性好

  • json:

    • 支持的数据类型:str,int,tuple,list,dict
    • 跨平台,跨语言,体积小
  • pickle:
    • 支持python所有的数据类型
    • 只能在python中使用,存储数据占空间大
    • dumps 转换为bytes,写到硬盘后是pickle自己的格式,不可直接读,看着像是乱码,其实不是
  • json序列化时是将数据转成字符串形式
  • pickle序列化时是将数据转成字节形式,在读写文件时必须是以二进制的方式进行读写,‘rb’,‘wb’
  •  import json,pickle
    data = {'a':1,'b':2}
    pickle_dumps_data = pickle.dumps(data)
    print(type(pickle_dumps_data),pickle_dumps_data)
    #<class 'bytes'>
    # b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02u.'
    pickle_loads_data = pickle.loads(pickle_dumps_data)
    print(type(pickle_loads_data),pickle_loads_data)
    #<class 'dict'> {'a': 1, 'b': 2}
    json_dumps_data = json.dumps(data)
    print(type(json_dumps_data),json_dumps_data)
    # <class 'str'>{"a": 1, "b": 2}
    json_loads_data = json.loads(json_dumps_data)
    print(type(json_loads_data),json_loads_data)
    # <class 'dict'> {'a': 1, 'b': 2}

shelve  对pickle进行封装,可进行多次dump,load,只能在python中使用,以k_v结构写入文档,每次dump都要写K

 import shelve
f = shelve.open("shelve_test")
names = ["alex","rain","test"]
info = {"names":"alex","age":22}
f["names"] = names
f["info_dic"] = info
f.close()
#获取数据
# f = shelve.open("shelve_test")
# print(list(f.keys()))#['names', 'info_dic']
# print(list(f.items()))#[('names', ['alex', 'rain', 'test']), ('info_dic', {'names': 'alex', 'age': 22})]
# print(f.get("names"))#['alex', 'rain', 'test']
# print(f.get("info_dic"))#{'names': 'alex', 'age': 22}
#修改数据,重新给K复制
# f = shelve.open("shelve_test")
# f["names"] = ["Alex","Rain","Test"]
# f.close()
# f = shelve.open("shelve_test")
# print(f.get("names"))#['Alex', 'Rain', 'Test']
#删除数据
# f = shelve.open("shelve_test")
# del f["info_dic"]
# f.close()
# f = shelve.open("shelve_test")
# print(f.get("info_dic"))#None #添加数据
# f = shelve.open("shelve_test")
# f["scores"] = [1,2,3,4,5]
# f.close()
# f = shelve.open("shelve_test")
# print(f.get("scores"))#[1, 2, 3, 4, 5]

最新文章

  1. 新春测 kinect motor
  2. javascript获取表单值的7种方式
  3. [转载]MongoDB开发学习 经典入门
  4. python中list注意事项
  5. Knowledgeroot安装与使用入门
  6. appcompat_v7/res/values-v21/themes_base.xml No resource found that matches the given name
  7. HIbernate学习笔记(六) 关系映射之多对多
  8. LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新
  9. RestTemplate 发送 get 请求使用误区 多个参数传值为null(转载)
  10. 【20190228】JavaScript-数组的操作
  11. Java中输入判定的错误和纠正
  12. Mybatis 源码简述
  13. LVS负载均衡群集(NAT)
  14. 前端(慕课网)笔记二:http协议
  15. day04-运算符
  16. SVN Update Error: Please execute the &#39;Cleanup&#39; command
  17. DevExpress v17.2新版亮点—Windows 10篇
  18. NLP分词
  19. “Hello World!”团队第三周召开的第五次会议
  20. sed 用法 转https://www.cnblogs.com/Dev0ps/p/8441255.html

热门文章

  1. Ubuntu11.04 安装cuda4.3
  2. Android笔记--Bitmap(二)内存管理
  3. eclipse的垂直选择功能
  4. javaSe数据类型
  5. hihoCoder #1050 : 树中的最长路
  6. [opencv] applyColorMap
  7. MFC:DISP_FUNCTION 参数
  8. Element-ui tree组件自定义节点使用方法
  9. Boo who-freecodecamp算法题目
  10. 初涉manacher