zoukankan      html  css  js  c++  java
  • python学习笔记 day20 序列化模块(三)

    shelve

    只有一个open()方法,打开文件然后按照key操作类似字典一样的东西;

     

    1. open()方法---打开文件,拿到一个文件句柄,操作key来对数据类型进行赋值:

    import shelve
    f=shelve.open('info')
    f['key']={'a':1,'b':2}
    f.close()
    
    f=shelve.open('info')
    print(f['key'])

    运行结果:

    import shelve
    f=shelve.open('info')   # 使用shelve.open(filename)拿到一个文件句柄 ,可以拿着该文件句柄进行操作其他数据类型,其实就是f['key']=要操作的数据类型,写进文件
    f['key']=[(1,2),(2,3)]  # f['key']后面的就是要写进文件的数据类型,这里是列表
    f.close()
    
    f=shelve.open('info')
    print(f['key'])
    f.close()

    运行结果:

     或者当我们想要修改某一数据类型中的值,比如添加一个元素:

    import shelve
    f=shelve.open('info')
    f['key']=[(1,2),(3,4),'璇璇'] # 拿着pickle.open(filename)生成的文件句柄 只要对f['key']进行赋值(某一要操作的数据类型)就可以把该数据类型写进文件
    f.close()
    
    f=shelve.open('info')
    f['key'].append('xuanxuan')  # 现在在往文件中对该数据类型的变量添加元素,再f['key']查看值,会发现该修改并不起作用
    print(f['key'])   # 再使用shelve.open(filename)打开一次文件,直接拿着文件句柄f['key']就可以取值

    运行结果:

    解决办法:当shelve.open(filename)时在open()函数中添加一个关键字参数writeback=True 就可以完成修改:

    import shelve
    f=shelve.open('info')
    f['key']={'a':1,'b':2}
    f.close()
    
    f=shelve.open('info',writeback=True)  # shelve.open(filename,writeback=True) 会生成一个文件句柄,拿着句柄操作key 比如添加元素 会完成修改
    print('修改之前的数据:',f['key'])
    f['key']['c']=3  # 对上面的字典增加一个属性
    print('修改之后的数据:',f['key'])
    f.close()

    运行结果:

    talk is cheap,show me the code
  • 相关阅读:
    Sql Server 2008卸载后再次安装一直报错
    listbox 报错 Cannot have multiple items selected when the SelectionMode is Single.
    Sql Server 2008修改Sa密码
    学习正则表达式
    Sql Server 查询第30条数据到第40条记录数
    Sql Server 复制表
    Sql 常见面试题
    Sql Server 简单查询 异步服务器更新语句
    jQuery stop()用法以及案例展示
    CSS3打造不断旋转的CD封面
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9650913.html
Copyright © 2011-2022 走看看