访问文件中的第 n 个 pickle

Accessing the nth pickle in a file

我有一个包含数千个 pickle 对象的文件。 我想访问第 n 个腌制对象而不必加载所有前面的对象。 我检查了答案 here and here 但他们没有回答我的问题。我的理解是递归 unpickling 从顶部开始,并在每个项目被 unpickle 后将光标移动到下一个项目。

是否可以手动指定光标的起始位置以便我只解开我想要的对象?

例如

import pickle

with open('file.pkl', 'rb') as f:
    for _ in range(2000, 2005):
        data = pickle.load(f) # This only loads the first 5 items, not the 2000-2005th items

在新项目中,改用 "shelve" 模块。您可以像字典一样访问腌制对象:

import shelve

sh= shelve.open("my_objects.db")
ll= [1,2,3,"Hello"]
sh["my_list"]= ll
sh["my_dict"]= { k:k*10 for k in range(10) }
sh.close()

sh= shelve.open("my_objects.db")
lizy= sh["my_list"]
dizy= sh["my_dict"]
sh.close()