【问题标题】:Accessing the nth pickle in a file访问文件中的第 n 个泡菜
【发布时间】:2018-11-26 19:36:43
【问题描述】:

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

是否可以手动指定光标应该从哪里开始,以便我只解开我想要的对象?

例如

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

【问题讨论】:

    标签: python python-3.x pickle


    【解决方案1】:

    在新项目中,请改用“搁置”模块。您可以像字典一样访问腌制对象:

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多