【问题标题】:Python -- Save Objects Together in a Binary File?Python——将对象一起保存在二进制文件中?
【发布时间】:2011-11-10 06:00:58
【问题描述】:

我有一个包含许多对象的python 类——有些是数据结构(listsdicts 等),有些是其他类的处理程序(也包含其他数据结构...)。

而不是使用pickle 来保存整个类及其内容,我想知道是否有办法serialize 几个所需对象 的数据并保存它们(仅它们)在二进制文件中?

例如,假设我有以下 2 个 python 对象:

myList = [1, 2, 3, 4, 5]
myDict = {'a' : 14, 'b' : 5, 'c' : 65}

将这两个python 对象的内容保存在二进制文件 中的最佳方法是什么?理想情况下,我希望将两个对象保存在同一个二进制文件中,以便以后加载数据。

【问题讨论】:

标签: python


【解决方案1】:

然后为它们创建一个容器类(或命名元组,或只是一个元组,等等)并腌制它(或修改原始类,以便只腌制您想要的那些部分)。 pickle 序列化,这是标准的 Python 机制。所以除非你需要,例如更多不同语言之间的互操作性,坚持下去。

【讨论】:

  • 谢谢。 pickle 是否以经济的方式保存数据? (我希望处理大对象)
  • @user3262424:使用协议 2,它是目前最紧凑/最高效的格式。
  • 在 Python 3 中,协议 3 仍然更有效。通常,将-1 作为协议参数传递将始终使用最新的协议(但可能不向后兼容)。
  • @ThomasK:啊,是的。我仍然默认使用 Python 2。如果数据长时间保留,最好明确指定协议。
  • 我开始更多地使用 Python 3,尽管我的手指仍然倾向于使用 print x
【解决方案2】:
import pickle

imelda = ('More Mayhem', 
        'Imelda May', 
        '2011',
         ((1, 'Pulling the Rug')
         (2, 'Psycho'),
         (3, 'Mayhem'),
         (4, 'Kentish Town Waltz')))

with open("imelda.pickle", "wb") as pickle_file:
    pickle.dumps(imelda, pickle_file)

【讨论】:

  • 请添加一些描述代码答案的描述
猜你喜欢
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 2015-10-03
相关资源
最近更新 更多