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不可以。  

  • 相关阅读:
    迪杰斯特拉算法简单分析
    华科机考:二叉排序树(改)
    华科机考:八进制
    华科机考:阶乘
    华科机考:找位置
    华科机考:回文字符串
    华科机考:a+b
    华科机考:N阶楼梯上楼
    华科机考:大整数排序
    iOS 适配iOS9
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8863062.html
Copyright © 2011-2022 走看看