- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将一个字典的字典添加到搁置文件中:
>>> d = shelve.open('index.shelve')
>>> d
<shelve.DbfilenameShelf object at 0x21965f0>
>>> print(list(d.keys()))
[]
>>> d['index'] = index
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/bns/rma/local/python/lib/python3.1/shelve.py", line 124, in __setitem__
self.dict[key.encode(self.keyencoding)] = f.getvalue()
_dbm.error: cannot add item to database
索引有点大,但不是很大。它本质上是一个 float 数组:
>>> len(index)
219
>>> a = [ index[k][k1] for k in index for k1 in index[k] ]
>>> len(a)
59995
>>> all([ type(x) is float for x in a ])
True
这是什么错误?另外,模块或模块文档中是否有某个地方我应该寻找以获得有关错误代表什么的更多信息?错误消息不是很有用,至少对我来说 :)。
最佳答案
我实际上在 dbm 模块上遇到了同样的问题,它可以在我的代码库中重现,但我无法在单独的测试中重现。
我的印象是在读数据库的时候有一个锁防止写。在我的例子中,数据库是 ~200Kb,有 ~10 个键并插入 time.sleep(1)
会解决问题,暗示 时某些异步进程未完成db[key] = value
.
关于python 搁置 dbm.error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4995162/
嗨,这是我的搁架条目结构 { 'Birds' : { 'BlueOnes': ["detailsAboutBlueBird"], 'RedOnes' : ["d
是否可以对已打开的文件使用搁置?我想执行如下操作,但 shelve.open 不接受文件描述符。 f = open('file.shelve') s = shelve.open(f) 最佳答案 搁
搁置 documentation说: The choice of which database package will be used (such as dbm, gdbm or bsddb) de
我正在使用 Pycharm。首先,无论何时在 Pycharm 中导入任何模块。完整的导入行淡出。但如果 import shelve 不会淡出。此外,当我运行该文件时,出现以下错误: Traceback
我已搁置文件a.txt, b.txt, c.txt . 现在我想对 a.txt 和 b.txt 进行一些更改,并与新文件 d.txt 一起搁置。 所以, 第一步,使用 p4 unshelve -s
我有一个包含大量文件的更改列表。我必须处理其他请求,所以我使用 p4 shelve -c 899 搁置了更改.但是当我打开 p4 时,文件仍然显示在工作区中。 由于数量很大,我想一次还原所有文件。我试
我在 Python 中使用 Shelve 时遇到问题: In [391]: x Out[391]: {'broken': {'position': 25, 'page': 1, 'letter': '
我正在尝试将一个字典的字典添加到搁置文件中: >>> d = shelve.open('index.shelve') >>> d >>> print(list(d.keys())) [] >>> d
我创建了一个名为 foo_module.py 的文件,其中包含以下代码: import shelve, whichdb, os from foo_package.g import g g.shelf
我是 Team Foundation Server 的新手,所以我想知道“搁置待处理更改”在 Team Foundation Server 中的作用是什么。我正在 Codeplex 上使用项目的 TF
我正在从 .nib 文件创建 .strings。也就是说,我正在将 .nib 文件更改为 Xcode 9.2 上的本地化字符串文件。 现在我得到了 .strings 文件,其中包含所有需要的字符串和根
我使用 Git 进行版本控制,Android Studio 与它很好地集成,非常喜欢! 但现在,我做了“VCS->搁置更改...” 然后 POOF,他们不见了。我以为我需要使用存储,但后来我想让我们看
我使用搁置看到了这种行为: import shelve my_shelve = shelve.open('/tmp/shelve', writeback=True) my_shelve['a'] =
我正在使用 shelve 来存储一些数据。 Traceback (most recent call last): File "rogue.py", line 312, in curs
我是一名优秀的程序员,十分优秀!