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

Python中在for循环内逐行读取文件的问题及正确输出需求

问题分析与解决

你的代码问题出在每次循环都重新打开文件,导致每次readline()都会从文件开头读取第一行,所以输出重复。下面是几种修复方案:

方案1:直接遍历已读取的行列表

既然已经用readlines()把所有行读到lines里了,直接循环这个列表就行,简单高效:

file1 = open('users.txt', 'r')
lines = file1.readlines()
file1.close()  # 记得关闭文件

for line in lines:
    parts = line.strip().split(':')
    print(parts[0])
    print(parts[1])

方案2:逐行读取文件(更推荐)

不需要提前读取所有行,文件对象本身支持迭代,会自动逐行读取,还能避免占用过多内存:

with open('users.txt', 'r') as file1:  # with语句会自动关闭文件,更安全
    for line in file1:
        parts = line.strip().split(':')
        print(parts[0])
        print(parts[1])

方案3:保留原循环结构的修复(不推荐,仅作演示)

如果一定要用原有的for i in range(len(lines))结构,不要在循环内重复打开文件,而是在循环外打开后逐行读取:

file1 = open('users.txt', 'r')
lines = file1.readlines()
file1.seek(0)  # 把文件指针移回开头

for i in range(len(lines)):
    line = file1.readline()
    parts = line.strip().split(':')
    print(parts[0])
    print(parts[1])

file1.close()

额外提示:

  • 原代码里的变量名lina是笔误,应该是line
  • 尽量使用with语句操作文件,它会在代码块结束后自动关闭文件,避免资源泄漏

内容的提问来源于stack exchange,提问作者Ali Emad Eldin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:22:42