祝建宇 发表于 2021-4-15 11:09:03

打开文件中使用for循环和readline函数对文件进行遍历,有什么区别吗?

def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0# 统计行数
    differ = []# 统计不一样的数量
    for line1 in f1:
      line2 = f2.readline()
      count += 1
      if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ


file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1, file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    print(differ)
    for each in differ:
      print('第%d行不一样' % each)

就好比红字部分,我把readline方法改为用for循环来遍历可以吗?

wp231957 发表于 2021-4-15 11:44:28

这样是一对一比较
双for循环则是形成交叉,不是期望值

祝建宇 发表于 2021-4-17 09:20:41

wp231957 发表于 2021-4-15 11:44
这样是一对一比较
双for循环则是形成交叉,不是期望值

大哥,双for循环交叉是不是会错行进行比较?

wp231957 发表于 2021-4-17 09:22:39

祝建宇 发表于 2021-4-17 09:20
大哥,双for循环交叉是不是会错行进行比较?

对啊,一个是M次比较,一个是N*M次比较
主要看你需求了

祝建宇 发表于 2021-4-17 16:20:07

wp231957 发表于 2021-4-17 09:22
对啊,一个是M次比较,一个是N*M次比较
主要看你需求了

双for循环就会第二个for循环还会返回去和第一个比较,所以错了行对不?

wp231957 发表于 2021-4-17 16:29:54

祝建宇 发表于 2021-4-17 16:20
双for循环就会第二个for循环还会返回去和第一个比较,所以错了行对不?

页: [1]
查看完整版本: 打开文件中使用for循环和readline函数对文件进行遍历,有什么区别吗?