2015-08-06 22 views
12

Veri kümesini bir hdf5 dosyasından, tercihen h5py kullanarak çıkarmak için herhangi bir yol var mı? Veya alternatif olarak, diğer veri kümelerini sağlam tutarken bir veri kümesinin üzerine yazılması mümkün mü? Anladığım kadarıylah5py'yi kullanarak hdf5 veri kümesini silme

, h5py/okuma hdf5 yazma dosyaları 5 modları

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

mod okuma r, okuma-yazma için r+, okuma-yazma için a olabildiği ancak yeni bir dosya varsa yaratır yok, w yazmak/üzerine yazmak ve , w ile aynıdır, ancak dosya zaten varsa başarısız. Denedim ama hiçbiri işe yaramıyor.

Her türlü öneri çok takdir edilmektedir.

+2

'del h5py_file kullanarak bir veri kümesi silebilir, böylecedeloperatörü uygulamaktır [dataset_address] ' – grisaitis

cevap

19

Evet, bu yapılabilir hiçbir sorunu olduğunu.

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

Örneğin (yukarıdaki gibi) eklemek veya yazma, yazılabilir bir modda açık dosyayı olması gerekir. Daha önce amacıf.__delitem__(datasetname)fonksiyon önerilen yorumlarda @ seppo-enarvi tarafından belirtildiği gibi

biridel f[datasetname]

+8

' __delitem__' işlevinin amacı, 'del' operatörünü uygulamaktır, böylece biri 'del f [veri kümesi adı]' nı kullanarak bir veri kümesini silebilir. –

+0

@SeppoEnarvi Yani, sözdiziminin h5py.File (giriş, "a") ile yukarıda yazılanların yerine f: del f [veri kümesi adı] olarak olması gerektiğini söylüyorsunuz? – DeeWBee

+2

Python'da bir nesneyi silmenin standart yolu olduğu için 'del f [datasetname]' yi kullanıyorum ve bu da belgelerin önerdiği şey. Ama ikisi de işe yarıyor. –

1

Dosya açık modlarıyla ilgili sorulan soruları anlamıyorum. Okuma/yazma için r + gitmenin yolu.

Bildiğim kadarıyla, özellikle dosya boyutu ne olursa olsun, küçültülmeyecek olursa, kaldırma işlemi kolay değil/mümkün değil.

Ama içeriği üzerine yazarak

f['mydataset'][:] = 0 
İlgili konular