Veri eklemek için mevcut bir HDF5 dosyasını açıyorum; Sonraki erişim için /A
adı verilen grubun var olmasını istiyorum. /A
koşullu olarak oluşturmanın kolay bir yolunu arıyorum (var olmadığında yeni grup oluştur ve iade et veya mevcut grubu iade et). Bir yol, /A
varlığını test etmektir. Nasıl verimli bir şekilde yapabilirim?Test grubu varlığı hdf5/C++
H5::H5File h5file(filename,H5F_ACC_RDWR);
H5::H5Group grp;
try{
grp=h5file.openGroup("A");
} catch(H5::Exception& e){
/* group does not exists, create it */
grp=h5file.createGroup("A");
}
ama bariz çirkinlik istisna hiç olağanüstü değil bilgileri iletmek için kullanılır olmasından kaynaklanır:
API Docs göre, böyle bir şey yapabilirsiniz.
C rutin yanlış (varolmayan) dönüş değeri bir istisna atar öyle bir şekilde H5Gget_objinfo sarmak gibi görünüyor H5::CommonFG::getObjinfo vardır; Yine aynı sorun.
Bu durumda C API'ye başvurmak temiz mi, yoksa doğrudan baktığım C++ API'sinde varlığı test etmek için doğrudan tasarlanmış bir işlev var mı?/... Belirtilen konumda
bool H5Location::attrExists(const char* name) const;
grup/veri kümesi varlığını test edebilirsiniz O yolu:
Bu [ 'H5Lexists'] (https://www.hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-Exists) hiç de mevcut değildir ve C++ eşdeğer gibi görünüyor. '... yakala ...' bana C++ 'dan çok daha fazla pythonic gibi geliyor, ama sanırım C API'sı iki seçeneğiniz. – Yossarian