shelve problem

  • Thread starter Michael Mulcahy
  • Start date
M

Michael Mulcahy

Hi All,

Problem: Shelve module doesn't like me

OS: Win2000
version: 2.3.3

Here is simple reproduction code and the error that occurs:

import shelve, anydbm
try:
test = shelve.open('hello', 'r') # file hello does not exist
except:
pass # this is called as hello does not exist

Exception exceptions.AttributeError: "DbfilenameShelf instance has no
attribute 'writeback'" in
Stack:
'__main__', line 7: pass
'shelve'.__del__(), line 148: self.close()
'shelve'.close(), line 140: self.sync()
'shelve'.sync, line 151: if self.writeback and self.cache:

Forgive me if this query is obvious but I have searched mailing lists
and google but could not resolve the issue.

Speculative Analysis:

shelve.open calls the DbfilenameShelf constructor passing the filename
"hello".

The DbfilenameShelf constructor does the following:

def __init__(self, filename, flag='c', protocol=None,
writeback=False, binary=None):
import anydbm
Shelf.__init__(self, anydbm.open(filename, flag), protocol,
writeback, binary)

The function anydbm.open throws an exception because:
1. the filename does not exist
2. the flag does not not contain a 'c' or an 'n'
(See anydbm.py line 77)

As the file "hello" does not exist the exception is thrown and caught
in my code.

I presume that python constructs the DbfilenameShelf object but does
not construct the parent shelf object because of that exception.

Then when python is cleaning up it destructs the DbfilenameShelf
object which I presume calls the destructor of the parent shelf
object. As the shelf object was not created due to initial exception,
python could not see the attributes and hence the Attribute Error
exception.

Comments Anyone?

Any questions please do not hesitate to contact me.

Michael.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top