shelve.open call gives error
inq1ltd at inqvista.com
Fri Feb 8 21:05:23 CET 2008
On Friday 08 February 2008 03:36, waltbrad
> Working through the Mark Lutz book
> Programming Python 3rd Edition.
> A couple of modules in the "Preview"
> chapter give me errors. Both on a
> shelve.open call:
> Pretty simple code, (2nd example):
> =====code begin=====
> import shelve
> from people import Person, Manager
> bob = Person('Bob Smith', 42, 30000,
> 'sweng') sue = Person('Sue Jones', 45,
> 40000, 'music') tom = Manager('Tom Doe',
> 50, 50000)
> db = shelve.open('class-shelve')
> db['bob'] = bob
> db['sue'] = sue
> db['tom'] = tom
> ====code end====
This works for me.
I converted your numbers to text,
I believe shelves requires string keys and
I had to eliminate the import Person, Manager
If you still have problems you have an idea
where to look.
##from people import Person, Manager
bob = 'Bob Smith', '42, 30000', 'sweng'
sue = 'Sue Jones', '45, 40000', 'music'
tom = 'Tom Doe', '50, 50000'
db = shelve.open('class-shelve')
db['bob'] = bob
db['sue'] = sue
db['tom'] = tom
> Error message++++++++
> Traceback (most recent call last):
> File "make_db_classes.py", line 9, in
> <module> db = shelve.open('class-shelve')
> File "C:\PYTHON25\lib\shelve.py", line
> 225, in open return
> DbfilenameShelf(filename, flag, protocol,
> writeback) File
> "C:\PYTHON25\lib\shelve.py", line 209, in
> __init__ Shelf.__init__(self,
> anydbm.open(filename, flag), protocol,
> File "C:\PYTHON25\lib\anydbm.py", line
> 83, in open return mod.open(file, flag,
> mode) File "C:\PYTHON25\lib\dbhash.py",
> line 16, in open return
> bsddb.hashopen(file, flag, mode) File
> "C:\PYTHON25\lib\bsddb\__init__.py", line
> 306, in hashopen d.open(file, db.DB_HASH,
> flags, mode) bsddb.db.DBError: (5,
> 'Input/output error') ++++++++++End Error
> I've looked on the errata pages of his
> website and used Google to find someone
> else who ran into this problem. Found
> someone else who had a similar error but
> no explanation was given. No other reader
> of the book seems to have had the problem.
> I'm using 2.5.1
> I thought maybe the file had to exist
> before it could be opened, so I created
> one with that name, but no dice. A
> different but similar set of errors. I
> also thought maybe there had to be a
> second argument like 'a', 'r' or 'w'. That
> doesn't work either.
> This is the first chapter of the book.
> It's an overview of the language features.
> So, this is pretty perplexing. Any help
> would be appreciated. Thanks.
More information about the Python-list