2015-08-06 55 views
12

C'è un modo per rimuovere un set di dati da un file hdf5, preferibilmente usando h5py? O in alternativa, è possibile sovrascrivere un set di dati mantenendo intatti gli altri set di dati?Eliminazione del set di dati hdf5 utilizzando h5py

Per la mia comprensione, h5py può leggere/scrivere HDF5 file in 5 modalità

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

dove modalità può essere r per la lettura, r+ per lettura-scrittura, a per lettura-scrittura, ma crea un nuovo file, se non esiste, w per scrittura/sovrascrittura e w- che è uguale a w ma non riesce se il file esiste già. Ho provato tutti, ma nessuno sembra funzionare.

Qualsiasi suggerimento è molto apprezzato.

+2

'del h5py_file [dataset_address] ' – grisaitis

risposta

19

Sì, questo può essere fatto.

È necessario che il file sia aperto in una modalità scrivibile, ad esempio aggiungi (come sopra) o scrivi.

Come notato da @ Seppo-enarvi nei commenti lo scopo del precedentemente raccomandatof.__delitem__(datasetname)funzione è quella di implementare l'operatoredel, in modo che si può eliminare un set di dati utilizzandodel f[datasetname]

+8

Lo scopo della funzione' __delitem__' è di implementare l'operatore 'del', in modo che si possa cancellare un set di dati usando' del f [datasetname] '. –

+0

@SeppoEnarvi quindi stai dicendo che la sintassi dovrebbe essere 'con h5py.File (input," a ") come f: del f [datasetname]' invece di quanto scritto sopra? – DeeWBee

+2

Vorrei usare 'del f [datasetname]', in quanto è il modo standard per eliminare un oggetto in Python, e questo è anche ciò che la documentazione consiglia. Ma probabilmente entrambi funzionano. –

1

Non capisco cosa abbia a che fare con le modalità di apertura dei file. Per leggere/scrivere r + è la strada da percorrere.

Per quanto ne so, la rimozione non è facile/possibile, in particolare indipendentemente da ciò che si fa la dimensione del file non si riduce.

Ma sovrascrivendo il contenuto non è un problema

f['mydataset'][:] = 0