马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 xiaofan1228 于 2020-2-20 21:18 编辑
小甲鱼的答案
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))
for each in differ:
print('第 %d 行不一样' % each)
这是我写的def compare(file1, file2):
diff = []
count = 0
swich = "多"
a = file1.readlines()
b = file2.readlines()
if len(a) < len(b):
length = len(a)
switch = "少"
delta = len(b) - len(a)
else:
length = len(a)
delta = len(a) - len(b)
for each in range(length):
if a[each] == b[each]:
continue
else:
diff.append(each+1)
count += 1
file1.close()
file2.close()
if count == 0 and delta == 0:
print("两个文件完全相同")
else:
print("共有%d处不同:" %count)
print("第一个文件比第二个文件%s%d行"%(switch,delta))
for each in diff:
print("其中第%d行不同" %each)
file1 = open("E:\\Python_homework\\29\\123.txt", encoding = 'UTF-8')
file2 = open("E:\\Python_homework\\29\\456.txt", encoding = 'UTF-8')
compare(file1, file2)
问题:
小甲鱼的答案没有考虑两个文档行数不一致的情况,
for line1 in f1:
line2 = f2.readline()
count += 1
if line1 != line2:
differ.append(count)
这里假如f1比f2要少几行,那么后面都不会出现“不同了”
我是用的readlines()先把txt转化为列表然后比较的,如果length直接取两者之中最长的,会出IndexError: list index out of range,
所以在这种情况下,我增加了print("第一个文件比第二个文件%s%d行"%(switch,delta))
因为我不知道怎么样能够在行数不一致的时候依然可以做出比较判断,
求指导
抱歉,写好了,没有运行调试,有不少错误 def file_compare():
f1 = open("f:/py/1.txt", encoding = 'UTF-8')
f2 = open("f:/py/2.txt", encoding = 'UTF-8')
a = f1.readlines()
b = f2.readlines()
differ = [] # 统计不一样的数量
delta = len(a) - len(b)
switch = "多" if delta > 0 else "少"
for n, (i, j) in enumerate(zip(a, b)):
if i != j:
differ.append(n + 1)
f1.close()
f2.close()
if differ == [] and delta == 0:
print("两个文件完全相同")
else:
if delta:
print("第一个文件比第二个文件%s%d行"%(switch,abs(delta)))
if differ:
print('两个文件共有【%d】处不同:' % len(differ))
for each in differ:
print('第 %d 行不一样' % each)
file_compare()
|