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

Tensorflow1.5+Python3.6下IndexError: list index out of range问题求助

问题解决:IndexError: list index out of range(加载specs.csv时)

错误原因

报错行Accuracy_accountant = Lines[-1]触发索引越界,说明读取specs.csv后得到的Lines列表是空的——要么文件本身为空,要么文件内容无法被解析为有效行,或者读取方式导致解析失败。

代码问题分析

原代码存在两个潜在问题:

  1. 假设specs.csv存在就一定包含至少2行可转换为float的有效数据,未处理文件内容不足或无效的情况
  2. Python 3中使用rb(二进制模式)打开文本文件,可能导致csv.reader解析异常,无法正确读取行数据

解决方案

  1. 检查specs.csv文件状态

    • 确认目标路径下的specs.csv非空,且至少包含2行可转换为浮点数的有效内容
    • 若为首次运行,检查代码中初始化写入specs.csv的逻辑,确认数据已正确写入文件
  2. 修正文件打开模式
    将文件打开代码从:

    with open(directory + '/specs.csv', 'rb') as csvfile:
    

    修改为:

    with open(directory + '/specs.csv', 'r', newline='') as csvfile:
    

    Python 3的csv模块推荐使用文本模式读取,避免二进制模式下的换行符解析问题

  3. 添加容错处理逻辑
    在访问列表索引前先校验长度,避免空列表或长度不足导致的报错,示例如下:

    if os.path.isfile(directory + '/specs.csv'):
        with open(directory + '/specs.csv', 'r', newline='') as csvfile:
            reader = csv.reader(csvfile)
            Lines = []
            for line in reader:
                # 跳过空行,避免转换失败
                if line:
                    try:
                        Lines.append([float(j) for j in line])
                    except ValueError:
                        # 跳过无法转换为float的行
                        continue
        # 校验列表长度后再访问索引
        if len(Lines) >= 2:
            Accuracy_accountant = Lines[-1]
            Delta_accountant = Lines[1]
        else:
            # 执行初始化逻辑,设置默认值并写入文件
            Accuracy_accountant = [0.0]  # 根据业务场景调整默认值
            Delta_accountant = [1e-5]
            # 将默认值写入specs.csv,避免后续重复报错
            with open(directory + '/specs.csv', 'w', newline='') as csvfile:
                writer = csv.writer(csvfile)
                writer.writerow(Delta_accountant)
                writer.writerow(Accuracy_accountant)
    else:
        # 原有的初始化逻辑
        ...
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:54:24