|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Twilight6 于 2020-7-14 11:55 编辑
为什么会这样子QAQ。。。
- def compare(file1,file2):
- list1 = []
- list2 = []
- e = open(file1)
- f = open(file2)
- for each_line in file1:
- list1.append(each_line)
- for each_line in file2:
- list2.append(each_line)
- e.close()
- f.close()
- length = len(list1)
- count = 0
- list3 = []
- for i in range(length):
- if list1[i] != list2[i]:
- i += 1
- count += 1
- list3.append(i)
- print('两个文件共有【%d】不同' % count)
- for each in list3:
- print('第%d行不一样'% each)
-
- print('请输入需要比较的第一个文件名:', end='')
- file1 = input()
- print('请输入需要比较的第二个文件名:', end='')
- file2 = input()
- compare(file1,file2)
复制代码
你for 循环的是文件名,而不是文件对象了:
for each_line in file1:
for each_line in file2:
改成:
for each_line in e:
for each_line in f:
而且你代码有些小错误,比如当 file1 文件更多行的时候,就会导致你第三个 for 循环过程超出范围导致报错
正确参考代码:
- def compare(file1, file2):
- list1 = []
- list2 = []
- e = open(file1)
- f = open(file2)
- for each_line in e:
- list1.append(each_line)
- for each_line in f:
- list2.append(each_line)
- e.close()
- f.close()
- length = len(list2) if len(list1) > len(list2) else len(list1)
- count = 0
- list3 = []
- for i in range(length):
- if list1[i] != list2[i]:
- i += 1
- count += 1
- list3.append(i)
- temp = abs(len(list1) - len(list2))
- if temp != 0:
- list3 += list(range(length,length+temp+1))
- count += temp
- print('两个文件共有【%d】不同' % count)
- for each in list3:
- print('第%d行不一样' % each)
- print('请输入需要比较的第一个文件名:', end='')
- file1 = input()
- print('请输入需要比较的第二个文件名:', end='')
- file2 = input()
- compare(file1, file2)
复制代码
|
|