GeofferyLibrom
2021-01-13 22:29
采纳率: 100%
浏览 120
已结题

用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行

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

  • 收藏

4条回答 默认 最新

  • 天际的海浪 2021-01-13 23:31
    已采纳

    每执行一次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
    
    
    打赏 评论
  • Angel OvO 2021-01-13 22:46

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

    打赏 评论
  • 泡视界 2021-01-14 18:37

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

    打赏 评论
  • 皛心 2021-01-14 21:02
    	
    with open('shili.txt', 'r') as f:
        while txt:=f.readline():
            print(txt,end='')

    海象运算符学过了没?

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

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

    打赏 评论

相关推荐 更多相似问题