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

  • 相关阅读:
    044 文件和数据格式化
    040 字典类型及操作
    042 实例10-文本词频统计
    Java中PreparedStatement和Statement的用法区别(转)
    java连接oracle的简单实例
    javamail发送邮件的简单实例(转)
    JAVA IO之管道流总结大全(转)
    缓冲流和转换流(转)
    使用缓冲流来读写文件(转)
    JAVA向文件中追加内容(转)
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8863062.html
Copyright © 2020-2023  润新知