有没有办法在Python中逐行写入hdf5文件?

时间:2019-05-01 20:18:56

标签: python hdf5 pytables hdfql

对于CSV文件,我们可以使用

writer = csv.writer(output)
writer.writerow([a, b, c, d])

是否有类似的东西来写Hdf5文件?

2 个答案:

答案 0 :(得分:1)

如果您不受特定技术的束缚,请签出HDFql,因为这样可以减少处理HDF5文件时的底层细节。

要解决您的问题,您需要创建一个具有两个维度的数据集:第一个维度是可扩展的,第二个维度的大小为4(根据您的代码段,我假设您想每行存储四个整数;此外,如果数据类型不是整数,请检查HDFql reference manual以获取所有数据类型的枚举,并相应地更改下面的代码段。

在Python中,要创建这样的数据集,请执行(在本示例中称为dset):

HDFql.execute("CREATE DATASET dset AS INT(UNLIMITED, 4)")

然后,对于要写入的每一行,执行(请用适当的值替换val0val1val2val3

HDFql.execute("INSERT INTO dset(-1:::) VALUES(%d, %d, %d, %d)" % (val0, val1, val2, val3))

...最后,像这样扩展数据集dset的第一维:

HDFql.execute("ALTER DIMENSION dset TO (+1)")

重复代码段#2和#3与要写入的行相同的次数。

答案 1 :(得分:1)

这与您的其他问题类似。Error when trying to save hdf5 row where one column is a string and the other is an array of floats

使用pytables,您可以创建一个空表,该空表引用定义了每个datataype的dtype(在此示例中为4个浮点数)。然后,您使用table_object.append(row_data)添加1或多行数据,其中row_data可以用元组列表或numpy数组来定义。请参阅我发布的用于回答上述问题的完整示例。