問題描述:
在拿到乙個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...