Please I need help with Shelves!!

Cristian Echeverria cer at tutopia.com
Tue Aug 8 00:41:05 EDT 2000


I need help with these please

> Hi
>
> I have some problems with the shelve module working on Win95.
> Please consider this code
>
> ###################################
> # Begin of my code
>
> import shelve
>
> shelvefile = "_test2.shelve"
>
> def make_shelve(cant):
>     dato = []
>     for i in range(cant):
>         dato.append(1)
>     d = shelve.open(shelvefile)
>     d["dato"] = dato
>     d.close()
>
> def clean_shelve():
>     d = shelve.open(shelvefile)
>     del d["dato"]
>     d.close()
>
> def change_shelve(cant):
>     d = shelve.open(shelvefile)
>     dato = d["dato"]
>     for i in range(cant):
>         dato.append(1)
>     d["dato"] = dato
>     d.close()
>
> def print_shelve():
>     d = shelve.open(shelvefile)
>     try:
>         dato = d["dato"]
>         print dato
>         print len(dato)
>     except :
>         print "[]"
>         print 0
>     d.close()
>
> # End of my code
> ###################################
>
> 1. If I do make_shelve(1000) I get a file with 1000 integers
> with size 7168 bytes, if then I do clean_shelve() key and data
> are deleted, but the file is still 7168 bytes, in fact key and
> data are still there but I can´t use them.
>
> 2. If I do make_shelve(10000) I get a file with 10000 integers
> with size 44032 bytes.
> But if I do the next:
> make_shelve(5000)
> for i in range(10): change_shelve(500)
> I get a file with 10000 integers too, but this time the size
> is 52736 bytes.
>
> Anybody can explainme this?
> Is something bad with my code?
> I tried the sync method but this does nothing.
> I noted that the bsddb module is used on win95.
> Thanks...
>
> Cristian Echeverria
>
>
> Sent via Deja.com http://www.deja.com/
> Before you buy.





More information about the Python-list mailing list