• 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
  • 相关阅读:
    [转]
    Linux
    [转]
    [转]
    Linux 高级网络编程
    [转]
    [译]- 6-1 排列窗体上的控件(Laying Out Widgets on a Form)
    [转]
    [转]
    the thread has exited with code -1073741819
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9650913.html
Copyright © 2020-2023  润新知