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

Python for循环首次迭代后读取文件行提示索引越界,求解决方案

问题原因

你的代码里每次循环调用guide.readlines(),第一次调用会读取整个文件的所有行到列表,同时文件指针会移动到文件末尾。第二次循环再调用readlines()时,因为指针已经在末尾,会返回空列表,这时候访问[x]自然会触发索引越界错误——哪怕你把x改成0也一样,因为空列表没有索引0。

修复方案

这里提供几种实用的修改方式:

方式1:先读取所有行到变量,再遍历前10行

先一次性把文件内容读到列表里,之后循环访问这个列表的前10项,避免重复调用readlines()导致的指针问题:

# 推荐用with语句自动关闭文件,避免资源泄漏
with open("guide.txt", "r") as guide:
    all_lines = guide.readlines()
    for x in range(10):
        print(all_lines[x], end='')  # end=''避免额外换行,因为每行本身带换行符

方式2:直接迭代文件对象,读取前10行(更高效)

文件对象本身是可迭代的,每次迭代返回一行,这种方式不用一次性加载全部2500行到内存,更适合大文件:

with open("guide.txt", "r") as guide:
    line_count = 0
    for line in guide:
        if line_count >= 10:
            break
        print(line, end='')
        line_count += 1

方式3:用itertools.islice简化代码

如果想更简洁,可以用itertools.islice直接截取前10行:

from itertools import islice

with open("guide.txt", "r") as guide:
    for line in islice(guide, 10):
        print(line, end='')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:15:30