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)
,它就能正常工作。
1 个回答
5
对文件对象使用for循环时,实际上是在隐式调用readline
(或者类似的功能)。所以发生的事情是,在每次循环中,你会调用readline
两次,这就是为什么你会得到每隔一行的原因。