循环中的Readline()在python中不起作用

时间:2014-09-03 13:00:37

标签: python readline

我有一个名为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)替换for循环,它就可以了。

1 个答案:

答案 0 :(得分:5)

文件对象的for循环隐式调用readline(或等效的) 所以发生的事情是,在每个循环中你调用readline两次,这就是你得到每一行的原因