用readline()!=''判断是否读完文件时发生的跳行读取现象的原因

现有一文件shili.txt,文件内容如下:

第1行
第2行
第3行
第4行
第5行

此处用readline()!=''判断是否读完文件,不为空则打印;为空则停止循环。

with open('shili.txt', 'r') as f:
    while True:
        if f.readline()!='':
            print(f.readline(),end='')
        else:break

得到结果如下

第2行
第4行

这里跳过了奇数行,只打印出了偶数行。但很明显奇数行并非为空,那么为什么会被跳过呢?

每执行一次f.readline()都会读取新的一行,

你在while循环中执行了两次f.readline()

这样每次循环都读取了两行,一行用于if判断(奇数行),一行用于输出(偶数行)。

 

应该每次循环只让它执行一次f.readline()

with open('shili.txt', 'r') as f:
    while True:
        s = f.readline()
        if s!='':
            print(s,end='')
        else:break

 

ReadLine每次读一行,if的时候是奇数行,print的时候是偶数行

啊这,哈哈哈哈,你运行了两次,兄弟

	
with open('shili.txt', 'r') as f:
    while txt:=f.readline():
        print(txt,end='')

海象运算符学过了没?

你应该尝试用它,非常好用,而且让你代码更简洁优雅!

对比一下我写的代码和你写的代码!