python - 访问文件中的第 n 个 pickle

标签 python python-3.x pickle

我有一个包含数千个 pickle 对象的文件。 我想访问第 n 个 pickled 对象,而不必加载前面的所有对象。 我检查了答案herehere但他们没有回答我的问题。我的理解是,递归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/

相关文章:

python - 应用程序引擎 : Request Data

Python lambda+exec 范围错误

python - 字符串替换问题

python-3.x - 不尝试使用任何属性时出现 AttributeError

python - 使用 FOR LOOP Pandas 的数据更新列

python - 运行时错误 : No MovieWriters available in Matplotlib animation

python - 我无法将字段命名为 "from"

python-3.x - 模拟打印,但允许在测试中使用它

python - 我可以流式传输 Python pickle 列表、元组或其他可迭代数据类型吗?

Python:无法 pickle 模块对象错误