zoukankan      html  css  js  c++  java
  • 6.3.3 使用 shelve 模块操作二进制文件

      Python标准库shelve也提供了二进制文件操作的功能,可以像字典赋值一样来写入二进制文件,也可以像字典一样读取二进制文件,有点类似于NoSQL数据库MongoDB。

    import shelve
    
    fp = shelve.open('shelve_test.dat')  #创建或打开二进制文件
    zhangsan = {'age':38,'sex':'Male','address':'SDIBT'}
    fp['zhangsan'] = zhangsan   #往文件里写入内容
    
    lisi = {'age':40,'sex':'Male','qq':'1234567','tel':'7654321'}
    fp['lisi'] = lisi
    
    fp.close()
    
    f = shelve.open('shelve_test.dat')
    print(fp['zhangsan']['age'])
    print(fp['lisi']['qq'])
    
    fp.close()
    
    ===========执行报错如下
    Traceback (most recent call last):
      File "C:UsersddddAppDataLocalProgramsPythonPython35libshelve.py", line 111, in __getitem__
        value = self.cache[key]
    KeyError: 'zhangsan'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "C:/Users/dddd/AppData/Local/Programs/Python/Python35/test1.py", line 13, in <module>
        print(fp['zhangsan']['age'])
      File "C:UsersddddAppDataLocalProgramsPythonPython35libshelve.py", line 113, in __getitem__
        f = BytesIO(self.dict[key.encode(self.keyencoding)])
      File "C:UsersddddAppDataLocalProgramsPythonPython35libshelve.py", line 70, in closed
        raise ValueError('invalid operation on closed shelf')
    ValueError: invalid operation on closed shelf
    
    
    #在Pycharm 上就报这个错,暂时不知道如何解决
     1 >>> import shelve
     2 >>> fp=shelve.open('shelve.dat')
     3 >>> zhangsan = {'age':38,'sex':'Male'}
     4 >>> fp['zhangsan'] = zhangsan
     5 >>> fp.close
     6 
     7 >>> f = shelve.open('shelve_test.dat')
     8 >>> fp['zhangsan']['age']
     9 38
    10 >>> 
  • 相关阅读:
    [USACO07DEC]观光奶牛Sightseeing Cows
    洛谷 U3348 A2-回文数
    LOJ #2037. 「SHOI2015」脑洞治疗仪
    1441 士兵的数字游戏
    BZOJ 1108: [POI2007]天然气管道Gaz
    P3047 [USACO12FEB]附近的牛Nearby Cows
    POJ 3061 Subsequence
    Hdu 5776 sum
    1052 最大M子段和
    1288 埃及分数
  • 原文地址:https://www.cnblogs.com/avention/p/8779758.html
Copyright © 2011-2022 走看看