np.load执行时报错'_io.BufferedReader' object is not subscriptable如何解决
错误原因与修复方案
报错释义
你遇到的报错Typeerror: '_io.BufferedReader' object is not subscriptable翻译为:类型错误:'_io.BufferedReader' 对象不支持下标索引操作
错误根因
你的代码中(_f)[0]是直接对open()返回的文件流对象_f做下标索引,该类对象本身不支持[x]形式的取值操作,你误将未加载的文件对象当成了已读取完成的数组/字典结构。
修复方法
根据你存储的npy文件结构二选一即可:
- 若
f_hr对应的npy文件本身就是包含image键的字典,修改为以下代码:
# 写法1:保留文件读取上下文 with open(f_hr, 'rb') as _f: hr = np.load(_f, allow_pickle=True)['image'] # 写法2:简化版,np.load支持直接传入文件路径 hr = np.load(f_hr, allow_pickle=True)['image']
- 若
f_hr对应的npy文件存储的是数组列表,第一个元素才是包含image键的字典,修改为以下代码:
with open(f_hr, 'rb') as _f: loaded_data = np.load(_f, allow_pickle=True) hr = loaded_data[0]['image']
补充说明
该报错属于代码逻辑错误,和你当前使用的Colab环境、Python 3.7版本、numpy 1.19.5版本均无关联,调整取值逻辑后即可正常运行。
内容的提问来源于stack exchange,提问作者eiliiy_re
相关产品推荐
相关产品推荐

