You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理宫颈图像数据集出现IndexError列表索引越界问题求助

错误原因

IndexError: list index out of range由路径分割符不匹配触发:

  • Windows系统下glob返回的路径默认用反斜杠\作为分割符,你代码中强行用斜杠/执行split('/')操作,无法将路径切分为预期的分段列表。
  • 分割后的列表长度仅为1,访问不存在的索引[3]就会触发越界报错。

修复方案

1. 统一路径分割逻辑

不要手动写死分割符,先把所有路径的反斜杠替换为斜杠再做分割,避免跨系统兼容问题:

# 所有路径先执行统一替换
p = p.replace('\\', '/')

也可以直接用os.path模块的内置方法提取文件名、父目录,兼容性更强。

2. 修正test集构造代码(报错点)

将列表推导替换为如下逻辑,避免硬编码索引:

test = glob.glob('D:\\Test cods\\KerasCNNClean\\data\\test\\*.jpg')
test_data_list = []
for p in test:
    # 先统一分割符
    p_uniform = p.replace('\\', '/')
    # 取路径最后一段作为文件名,不需要硬编码索引
    img_name = p_uniform.split('/')[-1]
    test_data_list.append([img_name, p])
test = pd.DataFrame(test_data_list, columns = ['image','path'])

3. 同步修正train集的潜在问题

  • 你当前train路径拼接的换行写法错误,加号要放在上一行末尾,否则train只会包含Type_1的图片:
# 错误写法
train=glob.glob('D:\\Test cods\\KerasCNNClean\\data\\train\\Type_1\\*.jpg') 
+glob.glob('D:\\Test cods\\KerasCNNClean\\data\\train\\Type_2\\*.jpg') +glob.glob('D:\\Test cods\\KerasCNNClean\\data\\train\\Type_3\\*.jpg')

# 正确写法
train=glob.glob('D:\\Test cods\\KerasCNNClean\\data\\train\\Type_1\\*.jpg') + \
glob.glob('D:\\Test cods\\KerasCNNClean\\data\\train\\Type_2\\*.jpg') + \
glob.glob('D:\\Test cods\\KerasCNNClean\\data\\train\\Type_3\\*.jpg')
  • 同步修改train的列表推导逻辑,避免同样的索引越界问题:
train_data_list = []
for p in train:
    p_uniform = p.replace('\\', '/')
    path_parts = p_uniform.split('/')
    # 取倒数第二段作为类别,对应Type_1/2/3
    img_type = path_parts[-2]
    # 取最后一段作为文件名
    img_name = path_parts[-1]
    train_data_list.append([img_type, img_name, p])
train = pd.DataFrame(train_data_list, columns = ['type','image','path'])[::5]

内容的提问来源于stack exchange,提问作者Nina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:42:00