c 讀取不了hdf5檔案中的字串

2022-09-01 02:48:12 字數 1275 閱讀 8353

問題描述:

在拿到乙個hdf5檔案,想用c++去讀取檔案中的字串,但是會報錯:read failed

ps: c++讀取hdf5的字串方法見:

具體錯誤資訊如下:

hdf5-diag: error detected in hdf5 (1.8.16) thread 140492203562816:

#000: ../../../src/h5dio.c line 173 in h5dread(): can't read data

major: dataset

minor: read failed

#001: ../../../src/h5dio.c line 425 in h5d__read(): unable to set up type info

major: dataset

minor: unable to initialize object

#002: ../../../src/h5dio.c line 958 in h5d__typeinfo_init(): unable to convert between src and dest datatype

major: dataset

minor: feature is unsupported

major: datatype

minor: unable to initialize object

terminate called after throwing an instance of 'h5::datasetiexception'

這很有可能是因為這個hdf5檔案不是用c++建立的,而是用python中的h5py庫建立的,h5py庫建立的hdf5檔案,對於字串會有編碼方式的一些問題,當然python的隱式型別的特徵,輸出可以直接賦值給未指定型別的變數,這種特性使得,python下建立的hdf5檔案,可以在python下使用。然而用在其他語言上時,字串的問題就突出出來了。

所以針對上面的字串讀取不了的問題,我的解決方法是,用c++去重新建立和讀取。

具體操作方式,我的思路就是,可以先把python建立的hdf5檔案中的字串用python讀出來,然後寫到txt檔案裡,然後c++讀取再建立。

當然,我認為平時就不要用python中的h5py庫去建立了,直接用c++建立就可以了,畢竟c++建立的python可以用,python建立的c++用不了。。。

如果你知道怎麼用c++去讀取python下建立的hdf5檔案中的字串,希望你能留個言。我嘗試了很多方法,都沒成功,所以上面的方法只是一種很無奈的方法,但是可以解決這個問題。

Python 讀取HDF5檔案

使用hdf5依賴於python的工具包 h5py 使用pandas讀取 hdf的優點 hdf的優點有 自述性 對於乙個hdf檔案裡的每乙個資料物件,有關於該資料的綜合資訊 元資料 在沒有任何外部資訊的情況下,hdf允許應用程式解釋hdf檔案的結構和內容。通用性 許多資料型別都可以被嵌入在乙個hdf檔...

HDF5檔案讀寫

做實驗需要跑資料,caffe庫要求資料格式為hdf5.hdf5資料的import與export可以通過matlab簡單完成。hdfview可以簡單檢視hdf5資料。1.h5disp命令可以檢視hdf5資料格式 h5disp test.h5 hdf5 test.h5 group dataset dat...

HDF5檔案讀寫

做實驗需要跑資料,caffe庫要求資料格式為hdf5.hdf5資料的import與export可以通過matlab簡單完成。hdfview可以簡單檢視hdf5資料。1.h5disp命令可以檢視hdf5資料格式 1 h5disp test.h5 2hdf5 test.h5 3 group 4 data...