ancera 发表于 2022-5-20 17:49:07

求解答

比较两个文件的不同之处

n = 0   #行数
count = []#不同的数量
file1 = input('请输入需要比较的第一个文件名:')
file2 = input('请输入需要比较的第二个文件名:')
f1 = open(file1+'.txt',encoding = 'utf-8')
f2 = open(file2+'.txt',encoding = 'utf-8')
for line1 in f1:
    line2 = f2.readline()
    n += 1
    if line1 != line2:
      count.append(n)


if len(count) == 0:
    print('两个文件完全一样')
else:
    print('一共%d处不同'%len(count))
    for each in count:
      print('第%d行不同'%each)
f1.close()
f2.close()


蓝色部分有人能给标注以下嘛,还有,如果想打印出不同的那几行,该怎么改

Twilight6 发表于 2022-5-20 18:18:35

# for 循环遍历 f1 文件对象,也是按行遍历,所以每循环一次,就从 f1 文件对象中读取一行内容
for line1 in f1:
   
    # 使用 readline() 函数从 f2 文件对象中读取一行内容
    line2 = f2.readline()
   
    # n 用于记录行数,for 循环每执行一次,那么就有一行数据被读取,即行数 +1
    n += 1
   
    # 判断两个文件对象此行内容是否相同
    if line1 != line2:
      
      # 若不相同,则将 n 记录下来,即添加如 count 列表中
      count.append(n)

如果想打印出不同的那几行,该怎么改

不知道是否是这个意思,参考代码:

n = 0
count = []
linetext = []
file1 = input('请输入需要比较的第一个文件名:')
file2 = input('请输入需要比较的第二个文件名:')
f1 = open(file1+'.txt',encoding = 'utf-8')
f2 = open(file2+'.txt',encoding = 'utf-8')
for line1 in f1:
    line2 = f2.readline()
    n += 1
    if line1 != line2:
      count.append(n)
      linetext.append()


if len(count) == 0:
    print('两个文件完全一样')
else:
    print('一共%d处不同'%len(count))
    for i in range(len(count)):
      print('第%d行不同' % count)
      print('\t%s文件第%d行内容为:%s' % (file1, count, linetext))
      print('\t%s文件第%d行内容为:%s' % (file2, count, linetext))
f1.close()
f2.close()

白two 发表于 2022-5-20 19:47:16

Twilight6 发表于 2022-5-20 18:18
不知道是否是这个意思,参考代码:

大佬这个代码感觉有点小问题, 只要有一个文本多了一行或者少了一行, 从这一行开始就都不一样了
我的建议是分别读取, 放进两个列表 (列表里面放字典, 行号和每行内容), 用成员操作符去判断内容是否一样

Twilight6 发表于 2022-5-20 20:17:57

白two 发表于 2022-5-20 19:47
大佬这个代码感觉有点小问题, 只要有一个文本多了一行或者少了一行, 从这一行开始就都不一样了
我的建议 ...



确实,这代码前提是文件行数相同,只能对应文件行上的差异

页: [1]
查看完整版本: 求解答