Python 29讲的课后题,求解惑
Python29讲的课后题中,第二个题,比较文件中的各行内容是否相同。答案中,在对各行比较时,为什么line1 不需要用f1.readline()得到,而line2则需要用到f2.readline()来得到?
在对各行比较时,为什么不需要指定对应的行进行比较,直接就是第一行和第一行对比,第二行和第二行对比了?我怎么总觉得这样写出来,意思是,第一个文件中的第一行和第二个文件中的每一行都对比了?
请各位小伙伴指点迷津呀~~
def file_comper(file_name1, file_name2):
f1 = open(file_name1)
f2 = open(file_name2)
count = 0
differ = []
for line1 in f1:
line2 = f2.readline()
count +=1
if line1 != line2:
differ.append(count)
f1.close()
f2.close()
return differ
本帖最后由 Twilight6 于 2020-7-12 10:31 编辑
这其实是一样的,当你 for 循环对象时候,是以行为单位来读取文件对象的内容 的
而你 f2.readline() 就是直接对 f2 文件对象读取一行内容
每次 for 循环只拿出一行 f1 文件的内容与 f2.readline() 也拿出一行进行比较
下次循环就从下一行开始,相互比较 f1 和 f2 文件的内容
每次的 for 循环都读取一行的 f1 文件内容,并将文件指针移动到 下一行
而 f2.readline() 也是一样,每次 for 循环 都只调用一次 readline()
所以每次的文件对比也就对比一行,而且每次调用 readline() 也会将文件指针移动到下一行开头
这样就达到了依次比较行差异的效果了
for line1 in f1: --依次读取f1的每一行
line2 = f2.readline()--依次读取f2的每一行
即每次循环读取f1的第一行,f2的第一行,继续比较,读取f1的第二行,f2的第二行,继续比较......
页:
[1]