gpt4 book ai didi

python - 我可以直接加载一个我想要的对象,跳过系列中的其他对象,用于 pickle 文件

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:35 27 4
gpt4 key购买 nike

我想解开一个我在许多其他人后面 pickle 的对象。我想知道是否可以直接加载它。

我将几个对象 pickle 为:

with open(filename, 'wb') as f:
pickle.dump(A_object, f)
pickle.dump(B_object, f)
pickle.dump(C_object, f)

现在在另一个代码中,我想加载 C_object,所以我这样做:

with open(filename, ‘rb’) as f:
pickle.load(f)
pickle.load(f)
C_object=pickle.load(f)

它可以工作,但是在我的真实代码中我有很多对象,并且传递所有预览对象的过程需要很多时间。我可以直接加载C_object吗?

我搜索类似的内容:

with open(filename, ‘rb’) as f:
C_object=pickle.load(f, 2)

避免我加载每个先前的对象并使我的代码更加高效。

提前致谢

最佳答案

虽然 pickle 不支持此功能,但这正是 shelve 模块的用途。

它允许您将 pickle 对象的文件作为字典进行操作:您可以通过将内容与键关联来存储内容,并通过这些键获取它们。

这是一个虚拟示例:

import shelve


class Foo:
pass


with shelve.open("test.shelf") as shelf:
shelf['a'] = Foo()
shelf['b'] = Foo()
shelf['c'] = Foo()


with shelve.open("test.shelf") as shelf:
foo_c = shelf['c']

您可以查看documentation for shelve了解更多功能。

关于python - 我可以直接加载一个我想要的对象,跳过系列中的其他对象,用于 pickle 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57655750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com