鱼C论坛

 找回密码
 立即注册
查看: 4949|回复: 10

[已解决]关于f.readline() 的提问

[复制链接]
发表于 2018-2-5 15:28:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for line1 in f1:
    line2 =  f2.readline()
    total +=1
    if line1 != line2:
        count.append(total)

这个里面的f2.readline()中是可以每次读取一行么?怎么实现的呢
最佳答案
2018-2-6 12:09:20
for line1 in f1:                      #这里是对f1循环,每次循环读取f1中内容的一行
     line2 =  f2.readline()       #这里是对读取f2的一行
     total +=1                       #这里是计行数
     if line1 != line2:              #这里是判断f1的一行与f2的同一行内容是否相同
         count.append(total)     #如果内容不同就把行数加入到count列表中

这是你给的代码的每行的意义

每次循环做的事情有
    读取f1的一行
    读取f2的一行
    确定行数
    判断f1的这行与f2的这行内容是否相同,不相同则记录下行数

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-5 15:30:24 | 显示全部楼层
当然,就是依次读一行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-5 15:33:18 | 显示全部楼层
BngThea 发表于 2018-2-5 15:30
当然,就是依次读一行

怎么循环读到f2的末尾的呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 15:35:34 | 显示全部楼层
ZCYDHHX 发表于 2018-2-5 15:33
怎么循环读到f2的末尾的呢

遇到文件的EOF自然就结束了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-5 15:37:42 | 显示全部楼层
BngThea 发表于 2018-2-5 15:35
遇到文件的EOF自然就结束了

什么是EOF?没有for循环,怎么就会一行读到下一行呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 15:55:36 | 显示全部楼层
EOF(End of File)是表示文件读取的结束,readline读取到文件最后一行后会自动产生EOF,使它不在往下读取。
在你给的代码中,循环次数是根据f1中内容行数决定的,之所以可以直接用for循环对文件使用,是因为for循环支持迭代,而文件内部存在迭代协议,协议内容就是读取文件内容一样(即readline)
为什么会一行读到下一行是因为内部存在一个位置指示器,每次读取一行指示器就指向下一行
以上,如果有问题欢迎指正
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 16:01:14 From FishC Mobile | 显示全部楼层
ZCYDHHX 发表于 2018-2-5 15:37
什么是EOF?没有for循环,怎么就会一行读到下一行呢

eof:文件结尾指标
你的代码中通过line1的循环进行的依次对f的每行读取操作
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-5 17:40:49 | 显示全部楼层
jkopp 发表于 2018-2-5 15:55
EOF(End of File)是表示文件读取的结束,readline读取到文件最后一行后会自动产生EOF,使它不在往下读取 ...

可是我的for是对f1循环啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-5 17:41:30 | 显示全部楼层
BngThea 发表于 2018-2-5 16:01
eof:文件结尾指标
你的代码中通过line1的循环进行的依次对f的每行读取操作

我的for是对f1循环啊,对f2有什么用?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 20:04:35 From FishC Mobile | 显示全部楼层
ZCYDHHX 发表于 2018-2-5 17:41
我的for是对f1循环啊,对f2有什么用?

因为你的语句放在循环体内,每次循环都会执行一次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 12:09:20 | 显示全部楼层    本楼为最佳答案   
for line1 in f1:                      #这里是对f1循环,每次循环读取f1中内容的一行
     line2 =  f2.readline()       #这里是对读取f2的一行
     total +=1                       #这里是计行数
     if line1 != line2:              #这里是判断f1的一行与f2的同一行内容是否相同
         count.append(total)     #如果内容不同就把行数加入到count列表中

这是你给的代码的每行的意义

每次循环做的事情有
    读取f1的一行
    读取f2的一行
    确定行数
    判断f1的这行与f2的这行内容是否相同,不相同则记录下行数

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表