序列化shelve模块
1.shelve对pickle进行封装,所以shelve也只能在python里使用。
shelve可以进行多次dump而且顺序不会乱。
1 2 3 4 5 6 7 8 9 10 11 | 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() |
下面在终端对文件进行修改,删除,增加等操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | >>> 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不可以。
author:Roc_Atlantis
welecome to reprint my articles
help me to modify my articles,thanks
越是困难的事越要立即去做,这样收益才会最大!!!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步