ZCYDHHX 发表于 2018-2-5 15:28:26

关于f.readline() 的提问

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

这个里面的f2.readline()中是可以每次读取一行么?怎么实现的呢

BngThea 发表于 2018-2-5 15:30:24

当然,就是依次读一行

ZCYDHHX 发表于 2018-2-5 15:33:18

BngThea 发表于 2018-2-5 15:30
当然,就是依次读一行

怎么循环读到f2的末尾的呢

BngThea 发表于 2018-2-5 15:35:34

ZCYDHHX 发表于 2018-2-5 15:33
怎么循环读到f2的末尾的呢

遇到文件的EOF自然就结束了

ZCYDHHX 发表于 2018-2-5 15:37:42

BngThea 发表于 2018-2-5 15:35
遇到文件的EOF自然就结束了

什么是EOF?没有for循环,怎么就会一行读到下一行呢

jkopp 发表于 2018-2-5 15:55:36

EOF(End of File)是表示文件读取的结束,readline读取到文件最后一行后会自动产生EOF,使它不在往下读取。
在你给的代码中,循环次数是根据f1中内容行数决定的,之所以可以直接用for循环对文件使用,是因为for循环支持迭代,而文件内部存在迭代协议,协议内容就是读取文件内容一样(即readline)
为什么会一行读到下一行是因为内部存在一个位置指示器,每次读取一行指示器就指向下一行
以上,如果有问题欢迎指正{:10_256:}

BngThea 发表于 2018-2-5 16:01:14

ZCYDHHX 发表于 2018-2-5 15:37
什么是EOF?没有for循环,怎么就会一行读到下一行呢

eof:文件结尾指标
你的代码中通过line1的循环进行的依次对f的每行读取操作

ZCYDHHX 发表于 2018-2-5 17:40:49

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

可是我的for是对f1循环啊

ZCYDHHX 发表于 2018-2-5 17:41:30

BngThea 发表于 2018-2-5 16:01
eof:文件结尾指标
你的代码中通过line1的循环进行的依次对f的每行读取操作

我的for是对f1循环啊,对f2有什么用?

BngThea 发表于 2018-2-5 20:04:35

ZCYDHHX 发表于 2018-2-5 17:41
我的for是对f1循环啊,对f2有什么用?

因为你的语句放在循环体内,每次循环都会执行一次

jkopp 发表于 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的这行内容是否相同,不相同则记录下行数

页: [1]
查看完整版本: 关于f.readline() 的提问