Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python搁置dbm.error?_Python_Shelve - Fatal编程技术网

python搁置dbm.error?

python搁置dbm.error?,python,shelve,Python,Shelve,我正在尝试向搁置文件中添加一个目录: >>> d = shelve.open('index.shelve') >>> d <shelve.DbfilenameShelf object at 0x21965f0> >>> print(list(d.keys())) [] >>> d['index'] = index Traceback (most recent call last): File "<std

我正在尝试向搁置文件中添加一个目录:

>>> 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

这个错误是什么?此外,在模块或模块文档中是否有我应该查找的地方,以获取有关错误表示的更多信息?错误信息不是很有用,至少对我来说是这样:)。

我实际上对dbm模块也有同样的问题,它可以在我的代码库中复制,但我不能在单独的测试中复制


我的印象是,在读取数据库时,有一个阻止写入的锁。在我的例子中,db是~200Kb,有~10个键,并插入一个
时间。sleep(1)
可以解决这个问题,暗示在
db[key]=value

的时刻还没有完成某个异步进程。我还应该说我正在使用python 3.1.2。你能设置搁置的元素吗?例如,如果
index
是一个int,您会得到相同的崩溃吗?那一份口述书呢,还是一份较小的口述书呢?我应该提到。。。对于我测试它的一个小列表或dict来说,它似乎工作得很好。我对不崩溃版本和崩溃版本之间的界限感兴趣。你能找到这样一种情况吗?一个有N个条目的dict不会崩溃,但N+1会崩溃?这一点很好。我会尽快测试并发回。以下是类似问题的链接:和
>>> 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