我似乎无法得到此工作。所有的例子和线程都有人创建新的数据集。我只想更新已经创建的数据集中的一个字段。更新HDF中的一个字段文件
以下是我有:
h5_file = h5py.File(event_file_path, "r+") #this works
event_processing_status = int(h5_file[PATH][STATUS].value[0]['Status']) #this works
print({"{0:b}".format(event_processing_status)) #this works
event_processing_status = (event_processing_status | STATUS_UPDATE) #this works
h5_file[PATH][STATUS].value[0]['Status'] = event_processing_status #updating???, no error
event_processing_status = int(h5_file[PATH][STATUS].value[0]['Status']) #this works
print({"{0:b}".format(event_processing_status)) #not the update value
h5_file.close()
我在做什么错?
更多信息: 的数据集的列的dtypes:
dset = h5_file[PATH][STATUS]
print(dset.dtype) gives:
[('Status', '<u8'), ('Segments', '<u4'), ('Characterized', '<u4'), ('More_Segments', '<u4'), ('ID', '<i4'), ('Releases', '<u2'), ('Type', '|u1'), ('Track', '<i4')]
dset[0,'Status'] = event_processing_status gives:
TypeError: Field name selections are not allowed for write.
在这一行'h5_file [路径] [STATUS] .value [0] ['Status'])= event_processing_status'有一个额外的)赋值左边。它真的在那里吗?还是它是一个错字? – Moher
复制和粘贴错字,对不起 – lr100
尝试更改索引顺序,'[Status'] [0]'。我假设'Status'是一个结构化数组字段名称。 'h5py'lets您将记录号和字段名称合并为一个语句:'dset [0,'状态'] =状态'。 http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data。如果我的猜测没有帮助,请向我们展示此数据集的'dtype'。 – hpaulj