J'essaie d'ajouter un dict de dicts dans un fichier shelve:python shelve dbm.error?
>>> 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
indice
est un peu grande, mais pas énorme. Il est essentiellement un ensemble de flotteurs:
>>> 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
Quelle est cette erreur? Aussi, y a-t-il quelque part dans le module ou le document de module que je devrais chercher pour obtenir plus d'informations sur ce que l'erreur représente? Le message d'erreur n'est pas très instructif, au moins pour moi :).
J'aurais aussi dû dire que j'utilise python 3.1.2. – mathtick
Pouvez-vous définir des éléments de l'étagère à tous? Par exemple, si 'index' est un int, obtenez-vous le même plantage? Qu'en est-il d'un dict, ou d'une dictée plus petite de dicts? – Andrew
Je devrais avoir mentionné que ... il semble bien fonctionner pour une petite liste ou dict que je l'ai testé avec. – mathtick