Ich kann nicht scheinen, dass dies funktioniert. Alle Beispiele und Threads haben Leute, die neue Datensätze erstellen. Ich möchte nur ein Feld in einem Datensatz aktualisieren, der bereits erstellt wurde.Aktualisieren eines Feldes in HDF-Datei
Hier ist, was ich habe:
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()
Was mache ich falsch?
Weitere Informationen: Die dtypes der Spalten des Datensatzes:
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.
in dieser Zeile 'h5_file [PATH] [STATUS] .value [0] ['Status']) = event_processing_status 'Es gibt eine extra) linke Seite der Zuweisung. Ist es wirklich da? oder ist es ein Tippfehler? – Moher
Kopieren und Einfügen Tippfehler, Entschuldigung – lr100
Versuchen Sie, die Indexreihenfolge zu ändern, '[Status '] [0]'. Ich nehme an, 'Status' ist ein strukturierter Array-Feldname. 'h5py'lets Sie haben Datensatznummer und Feldname in einer Anweisung zusammengefasst:' dset [0, 'Status'] = status'. http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data. Wenn meine Vermutung nicht hilft, zeigen Sie uns den 'dtype' dieses Datensatzes. – hpaulj