存储'对象'

时间:2010-11-05 09:46:36

标签: python pytables

PyTables是否支持存储Python对象? 像这样的东西:

dtype = np.dtype([('Name', '|S2'), ('objValue', object)])
data = np.zeros(3, dtype)
file.createArray(box3,'complicated',data)

我在尝试这样做时遇到错误...... 如何正确存储对象数组?有可能吗? 感谢

2 个答案:

答案 0 :(得分:5)

您可以使用Pytables保存通用Python对象:

>>> dtype = np.dtype([('Name', '|S2'), ('objValue', object)])
>>> data = np.zeros(3, dtype)
>>> file = tables.openFile('/tmp/test.h5', 'w')
>>> myobjects = file.createVLArray(file.root, 'myobjects', tables.ObjectAtom())
>>> myobjects.append(data)
>>> myobjects[0]
array([('', 0), ('', 0), ('', 0)], 
      dtype=[('Name', '|S2'), ('objValue', '|O8')])

但是,这将在幕后使用pickle(实际上是cPickle),因此您将无法从其他语言访问这些对象(pickle是仅由Python本身支持的序列化格式)。

答案 1 :(得分:1)

如果要将复杂数据存储在相关库不支持的某个位置,请尝试使用pickle模块。