Question: suppose that I write X number of objects (in casu different lists) to the pickle file,
like the example, but stretched out in time.
And I know in which order.
Can I now approach the pickle file and say "Give me the 7th object" ?
That would be very handy
But I guess I have to start from the top and skip 1 though 6.
Paul
(Sep-27-2022, 02:38 PM)DPaul Wrote: [ -> ]Can I now approach the pickle file and say "Give me the 7th object" ?
I don't think you can do that. Pickle does not provide random access. The closest object that I can think of is the
persistent.list.PersistentList
class available in the
zodb pakckage. It stores a persistent list of objects in pickle format and provides random access, but using zodb might be overkill for what you want to do. Another alternative is to use a shelve which is a persistent dictionary storing pickled objects, provided by the python standard library. I have not used shelve in the last 20 years and I found that it was slow the last time I did it.
Files are really not "random access" type storage. If all your pickle objects were some fixed size you could do what you want using file.seek() to move the file pointer to the start of the desired pickle object. But a fixed size for pickle objects would mean each item in the file would need to be padded to some large size that allowed for storing the largest allowable pickled object.
For variable sized objects you need some sort of index->offset table, and things are beginning to look like a file system, or a database.
No random access, too bad.
Thanks for all the help. I have a procedure,
that leads to a pickle file the way I want it.
KISS is now the message for me.
Paul