• 序列化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不可以。  

  • 相关阅读:
    Linux学习笔记(八)权限管理命令
    Linux学习笔记(七)关机、重启及常用的网络命令
    Linux学习笔记(六)压缩和解压缩命令
    Linux学习笔记(五)搜索命令
    Linux学习笔记(四)帮助命令
    Linux学习笔记(三)目录和文件都能操作的命令
    Linux学习笔记(二)文件操作命令
    Linux学习笔记(一)目录处理命令
    面试题((A)null).fun()——java中null值的强转
    idea注册码
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8863062.html
Copyright © 2020-2023  润新知