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

Python读取文本指定行触发IndexError列表索引越界错误如何解决

问题根因
  • return语句错误放在for循环内部:第一次循环遍历到第一行内容、添加到list_1后就直接执行返回逻辑,此时list_1仅包含1个元素,仅支持索引0,传入大于等于1的索引参数就会触发越界错误
  • 冗余代码line.index(line)无实际作用,可直接删除
  • 未做文件资源释放、索引合法性校验,存在其他潜在异常风险
  • 路径变量名my_patch为拼写错误,正确应为my_path
修复后的代码
import os

def list_pip(n):
    my_path = "sort.txt"
    # 先判断文件是否存在且非空
    if not os.path.exists(my_path) or os.path.getsize(my_path) <= 0:
        return ""
    # 用with上下文管理器自动关闭文件,避免资源泄漏
    with open(my_path, 'r', encoding='utf-8') as f:
        list_1 = [line.strip() for line in f.readlines()]
    # 索引合法性校验,避免越界
    if 0 <= n < len(list_1):
        return list_1[n]
    else:
        return f"索引{n}超出范围,文件共{len(list_1)}行"
改动说明
  • 将return逻辑移出for循环,等所有行读取完毕存入列表后再执行返回逻辑
  • 用列表推导式简化行内容读取代码,strip()方法可去除每行末尾的换行符,可根据需求决定是否保留
  • 新增文件存在性、索引合法性校验,覆盖更多异常场景
  • 修复路径变量拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:33:01