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]