我有一个包含数千个 pickle
对象的文件。
我想访问第 n 个 pickled 对象,而不必加载前面的所有对象。
我检查了答案here和 here但他们没有回答我的问题。我的理解是,递归unpickle从顶部开始,并在每个项目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”模块。您可以像字典一样访问 pickle 对象:
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()
关于python - 访问文件中的第 n 个 pickle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53479071/