很抱歉,这是h5py
上的一个非常基本的问题。
我正在阅读文档,但我没有找到类似的例子。
我试图用Python创建多个hdf5数据集,但是在我关闭文件数据后会被覆盖。
我们说我做了以下事情:
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
f["data1"].value
f.close()
我得到了
KeyError:"无法打开对象(对象' data1'不存在)"
如果我追加数据,则需要先在'w'
模式下打开,然后在'a'
模式下追加,有两个不同的语句。
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'a')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
f["data1"].value
f.close()
如果我在'a'
模式下打开文件:
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'a')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'a')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
print(f['data1'].value)
f.close()
RuntimeError:无法创建链接(名称已存在)
根据文档,数据应该连续存储,但我没有找到如何避免覆盖数据。
如何仅使用一个语句将数据存储在先前关闭的hdf5上?
答案 0 :(得分:2)
如果你想在每次运行中创建一个唯一的文件,那么你应该考虑像这样命名文件,一个例子是将时间戳添加到文件的名称,一个非常简单的例子就是使用{{ 1}}模块和datetime
和now
方法来创建文件名。示例 -
strftime
然后您可以使用该文件名打开文件。
演示 -
import datetime
filename = "test_{}.hdf5".format(datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S"))