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

用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
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)