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

为何Python的readline代码未输出预期结果?求技术解答

Python readline代码丢失行的原因解析

问题场景

你写出了两段Python文件读取代码,第一段无法输出预期结果:

f=open('Python_practice/Sample1.txt','r')
while f.readline() != '':
    print(f.readline(),end = '')
f.close()

实际输出缺失第1行和第3行:

How are you ?
What about you ?

而第二段代码能得到完整的预期输出:

f=open('Python_practice/Sample1.txt','r')
while True:
    data = f.readline()
    if data == '':
        break
    else:
        print(data,end = '')
f.close()

预期输出:

Hello!
How are you ?
I am fine, thanks.
What about you ?

原因分析

问题的核心是第一段代码在单次循环中调用了两次f.readline():

  • while条件里的f.readline()会读取一行内容,用来判断是否继续循环,但这次读取的内容没有被保存或打印。
  • 紧接着print里的f.readline()会读取下一行,然后打印出来。

文件对象的读取指针是单向移动的,每调用一次readline(),指针就会向后移动一行。所以第一段代码的执行流程是:

  1. 读取第1行→判断非空,进入循环→打印第2行
  2. 读取第3行→判断非空,进入循环→打印第4行
  3. 读取第5行(文件末尾,为空)→退出循环

这样第1行和第3行只被用于循环判断,根本没机会被打印,所以就出现了行丢失的情况。

而第二段代码的逻辑是每一行只读取一次:把readline()的结果存入data变量,后续的判断和打印都基于这个变量,不会重复读取,所以所有行都能被正常输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:17