Python中循环中的readline()无效

0 投票
1 回答
1837 浏览
提问于 2025-04-19 14:17

我有一个叫做 file 的文件,里面有这些文字:

Hello
I am not a bot
I am a human
Do you believe me?
I know you won't
Yes I am a bot
Yes you thought it right

这段代码会把文本中的所有行都打印出来:

with open(file) as f:
    for i in f:
        print(i,end="")

但是这段代码却没有打印出来,我不明白为什么。

with open(file) as f:
    for i in f:
        print(f.readline(),end="")

这段代码打印的是:

I am not a bot
Do you believe me?
Yes I am a bot

我理解的是,当循环遍历文件中的每一行时,它会读取这一行并把它作为字符串返回,然后再打印出来。如果我把这个循环换成 for i in range(9),它就能正常工作。

1 个回答

5

对文件对象使用for循环时,实际上是在隐式调用readline(或者类似的功能)。所以发生的事情是,在每次循环中,你会调用readline两次,这就是为什么你会得到每隔一行的原因。

撰写回答