read open create python dataset hdf5 h5py

python - create - h5py open file



Borrar el conjunto de datos hdf5 usando h5py (3)

¿Hay alguna forma de eliminar un conjunto de datos de un archivo hdf5, preferiblemente utilizando h5py? O alternativamente, ¿es posible sobrescribir un conjunto de datos mientras se mantienen los otros conjuntos de datos intactos?

A mi entender, h5py puede leer / escribir archivos hdf5 en 5 modos

f = h5py.File("filename.hdf5",''mode'')

donde el modo puede ser r para lectura, r+ para lectura-escritura, a para lectura-escritura pero crea un nuevo archivo si no existe, w para escritura / sobrescritura y w- que es igual que w pero falla si el archivo ya existe He intentado todo, pero ninguno parece funcionar.

Cualquier sugerencia es muy apreciada.


Intenté esto y la única manera de reducir el tamaño del archivo es copiando todo en un archivo nuevo y simplemente dejando de lado el conjunto de datos en el que no estaba interesado:

fs = h5py.File(''WFA.h5'', ''r'') fd = h5py.File(''WFA_red.h5'', ''w'') for a in fs.attrs: fd.attrs[a] = fs.attrs[a] for d in fs: if not ''SFS_TRANSITION'' in d: fs.copy(d, fd)


No entiendo qué tiene que ver tu pregunta con los modos de abrir archivos. Para leer / escribir r + es el camino a seguir.

Que yo sepa, la eliminación no es fácil / posible, en particular, no importa lo que haga, el tamaño del archivo no se reducirá.

Pero sobrescribir el contenido no es problema

f[''mydataset''][:] = 0


Si, esto se puede hacer.

with h5py.File(input, "a") as f: del f[datasetname]

Necesitará tener el archivo abierto en modo de escritura, por ejemplo, adjuntar (como arriba) o escribir.

Como lo señaló @ seppo-enarvi en los comentarios, el propósito de la función f.__delitem__(datasetname) recomendada anteriormente es implementar el operador del , para que uno pueda eliminar un conjunto de datos usando del f[datasetname]