记录一下今天浪费了一个多小时的bug。
今天要读取hdf5文件,百度了一个需要用到h5py这个包,下面是官方的user guide:
https://docs.h5py.org/en/stable/quick.html
本来以为很快就搞定了,结果上来就报错AttributeError: ‘slice’ object has no attribute ‘encode’
f = h5py.File(pathin + 'GFED4.1s_{}.hdf5'.format(i+1997),'r')
a=f['burned_area'][:] # 报错:AttributeError: 'slice' object has no attribute 'encode'
a.shape #报错:AttributeError: 'Group' object has no attribute 'shape'
感觉很奇怪,先是换了一台电脑,然后又换了h5py的版本,发现都没用,只好静下心来仔细分析一下
这里没有attribute其实就应该想到是数据类型不对了,我又自己写了一个hdf5文件,才发现h5py这个包本身肯定是安装对了,其实上面的userguide写的很清楚了,h5py有两个数据类型,最顶层的叫group,下面有各种分支,只有到了最底层的分支才能变成dataset,上面出错的原因就是我的a变量其实依然是groups,而不是datasets,所以才不会有.shape、.value等方法
所以正确的写法应该继续用a.keys()
查看下一级还有没有子文件,或者看a的数据类型,不然肯定会报错的。