之前跑深度学习代码中,我被这个报错坑了很久,下面给出一些我了解的解决方案的汇总。
卸载原有的hpy5版本重新下载一个即可。
具体步骤:
首先打开anaconda prompt
分别输入以下代码并分别按回车运行即可
卸载
pip uninstall h5py
下载
pip install h5py==2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/
跑代码试试吧,应该能成了。
啊?你说版本下载好了还是不行?
那请继续下面的步骤!!!
做法:
1.点进报错的代码行,在.decode(‘x’)的前面加上.encode(‘x’)。(x为原来的字符串)
例如:将xxx. decode('utf-8')
改为xxx.encode('utf-8'). decode('utf-8')
。
2.如果encode已存在,那就把它删掉,别问为什么,冲!
······当然如果你要问为什么也可以(下面讲一下原因)。
首先了解一下encode和decode这两位大哥:
encode: 把普通字符串转为机器可识别的字节流(bytes)
decode: 把bytes转为字符串
对于python2和3的版本中,又各有差异,Python3的str(字符串)默认不是bytes,所以不能decode,只能先encode转为bytes,再decode;python2的str 默认是bytes,所以能decode。
AttributeError: ‘str’ object has no attribute ‘decode’
这样的报错原因就是字符串本来不是bytes,还要‘强人所难’加上decode解码,decode的对象不是bytes,就导致错误的出现;AttributeError: 'str' object has no attribute ‘encode’
的情况的话就说明字符串已经是bytes了,还要加上encode编码,bytes再编码就没意义了,所以报错。因此对于以上两种情况,前者解决方法是加encode,后者解决方法是去掉encode。