zoukankan      html  css  js  c++  java
  • 序列化shelve模块

    1.shelve对pickle进行封装,所以shelve也只能在python里使用。

    shelve可以进行多次dump而且顺序不会乱。

    import shelve
    
    f = shelve.open('shelve_test')    #打开文件方式和json,pickle不同。
    
    names = ['li','xiao','xiao','ali','lucas']
    dicts = {'lucy':1,'liming':2,'casio':3}
    
    f["first"] = names          #把文件当成一个字典,括号里的是字典的key,括号外面的数据类型是字典的value。
    f["second"] = dicts
    
    f.close()
    

    下面在终端对文件进行修改,删除,增加等操作。

    >>> import shelve
    >>> f = shelve.open("shelve_test")
    >>> list(f.items())
    [('first', ['li', 'xiao', 'xiao', 'ali', 'lucas']), ('second', {'lucy': 1, 'liming': 2, 'casio': 3}), ('source', [1, 2, 5, 6, 7, 8, 9, 0])]
    >>> f["source"]
    [1, 2, 5, 6, 7, 8, 9, 0]                  #注意:不能直接对value里面的值进行修改,只能给key进行重新赋值来达到修改。
    >>> f.get("source")
    [1, 2, 5, 6, 7, 8, 9, 0]
    >>> f["source"] = [1,2,3,4,6,8,9]
    >>> list(f.items())
    [('first', ['li', 'xiao', 'xiao', 'ali', 'lucas']), ('second', {'lucy': 1, 'liming': 2, 'casio': 3}), ('source', [1, 2, 3, 4, 6, 8, 9])]
    >>> del f["source"]
    >>> list(f.items())
    [('first', ['li', 'xiao', 'xiao', 'ali', 'lucas']), ('second', {'lucy': 1, 'liming': 2, 'casio': 3})]
    >>> f["add_1"] = [1,1,1,1,12,3,4]
    >>> list(f.items())
    [('first', ['li', 'xiao', 'xiao', 'ali', 'lucas']), ('second', {'lucy': 1, 'liming': 2, 'casio': 3}), ('add_1', [1, 1, 1, 1, 12, 3, 4])]
    

      

    shelve对比json,pickle的优缺点

    shelve可以多次dump,并且能够通过key值返回需要的数据类型,很方便,不会乱。

    shelve比pickle常用,但是json可以跨语言,shelve不可以。  

  • 相关阅读:
    20165229预备作业三
    20165529学习基础和C语言基础调查
    20165229我所期待的师生关系
    20165210 Java第七周学习总结
    20165210 Java第六周学习总结
    20165210 Java第一次实验报告
    20165210 Java第五周学习总结
    20165210 Java第四周学习总结
    20165210 Java第三周学习总结
    20165210 Java第二周学习总结
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8863062.html
Copyright © 2011-2022 走看看