Je n'arrive pas à faire fonctionner ceci. Tous les exemples et les threads ont tous des personnes qui créent de nouveaux jeux de données. Je veux juste mettre à jour un champ dans un ensemble de données déjà créé.Mise à jour d'un champ dans le fichier HDF
Voici ce que j'ai:
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()
Qu'est-ce que je fais mal?
Plus d'infos: Les dtypes des colonnes du jeu de données:
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.
dans cette ligne 'h5_file [PATH] [STATUS] .value [0] ['Status']) = event_processing_status' il y a un extra) côté gauche de l'assignation. est-ce vraiment là? ou est-ce une faute de frappe? – Moher
copier et coller la faute de frappe, désolé – lr100
Essayez de modifier l'ordre d'indexation, '[Status '] [0]'. Je suppose que 'Status' est un nom de champ de tableau structuré. 'h5py'lets vous avez combiné le numéro d'enregistrement et le nom de domaine en une seule instruction:' dset [0, 'Status'] = status'. http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data. Si ma supposition n'aide pas, montrez-nous le 'dtype' de cet ensemble de données. – hpaulj