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

为何出现IndexError: list index out of range错误?Python项目调试遇阻

问题分析与解决

错误原因

你遇到的IndexError是因为使用contenu.split()将整个文件内容拆分为一维列表后,按步长5遍历的逻辑存在隐患:如果文件内容的元素总数不是5的整数倍(比如最后一行有空缺、多余空白字符或空行),循环到最后一次时i+4会超出列表的索引范围。

比如假设文件末尾有一个空行,或者某行的元素数量不符合5个的预期,就会触发这个错误。

改进方案

换用逐行读取的方式处理文件,逻辑更直观,也能避免索引越界问题,同时使用Python推荐的with语句自动管理文件的打开与关闭:

with open("concours.txt", "r") as fichier, open("admis.txt", "w") as fichier2:
    for line in fichier:
        # 去除行首尾的空白字符(换行、空格等)
        cleaned_line = line.strip()
        # 跳过空行
        if not cleaned_line:
            continue
        # 将行拆分为元素列表
        parts = cleaned_line.split()
        # 判断最后一个元素是否为'admis'
        if parts[-1] == "admis":
            # 直接写入原行,保留原有格式
            fichier2.write(line)

为什么这个方案更好

  1. 避免索引越界:逐行处理时,每行单独拆分,不会因为全局元素总数不规整导致索引错误;
  2. 格式保留:直接写入原行,能保留文件中原本的空格分隔格式,而不是手动拼接成单一空格分隔的内容;
  3. 资源安全:with语句会自动关闭文件,无需手动调用close(),避免因忘记关闭文件导致的资源泄漏。

原代码的其他问题

原代码中写入文件时的"+" "是语法错误,应该替换为"\n"来实现换行,但使用上述逐行写入的方式可以完全避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:15:41