马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Ⅲ只小猪 于 2021-1-25 19:44 编辑
file_name1 = input("请输入需要比较的头一个文件名:")
file_name2 = input("请输入需要比较的另一个文件名:") # 指定文件名
file1 = open(file_name1)
file2 = open(file_name2) # 打开文件
demo1 = list(file1.read()) # 将读取的内容存入列表
number1 = demo1.count('\n') + 1 # 计算分割次数
file1.seek(0,0) # 书签
demo1 = file1.read() # 二次读取
text1 = demo1.split('\n', number1) # 因为自动返回一个列表,所以不必新建列表了
demo2 = list(file2.read())
number2 = demo2.count('\n')
file2.seek(0,0)
demo2 = file2.read()
text2 = demo2.split('\n', number1)
if text1 != text2:
same = [x for x in text1 if x in text2] #两个列表中都存在
different = [y for y in (text1 + text2) if y not in same] #两个列表中的不同元素
different_number = len(different) / 2
print('两个文件共有【{}】处不同', format(different_number))
'''if text1 != text2:
for diff1 in text1:
if diff1 in text2:
same = [diff1]
for diff2 in (text1 + text2):
if diff2 not in same:
difference = [diff2]'''
else:
pass
前两个要求都实现了,第三个要求也就是指出哪里不同的功能不知道怎么实现。
我的思路是把他们存进一个列表里,然后获取不同元素的下标,但是存进different之后并不是text1,text2的下标了,是要让different里的元素跟text里面的比较,然后获取下标吗?再打印出来。而且要怎么获取下标啊
不知道怎么实现,求大佬解答
本帖最后由 jackz007 于 2021-1-25 20:52 编辑 file_name1 = input("请输入需要比较的头一个文件名:")
file_name2 = input("请输入需要比较的另一个文件名:")
# 下面的代码把 file_name1 、file_name2 的内容存入列表 text1、text2
fp = open(file_name1)
text1 = list(fp)
fp . close()
fp = open(file_name2)
text2 = list(fp)
fp . close()
d = 0 # 差别点计数器清零
for c in range(1 , len(text1) + 1): # 按 file_name1 的总行数循环,c 是从 1 开始的索引,对应于行号
s1 = text1[c - 1] # 从 file_name1 中取出第 c 行文本存入 s1
s2 = text2[c - 1] # 从 file_name2 中取出第 c 行文本存入 s2
for r in range(1 , len(s1) + 1) : # 按 s1 的字符数量安排循环
if s1[r - 1] != s2[r - 1]: # 逐字符对比同一行、同一列
print('第 %d 行,%d 列不同' % (c , r)) # 如有不同,输出信息
d += 1 # 差别点计数器计数值加 1
break # 因为每行只需要找到第一个不同点,所以,结束本行比较
if d == 0 : # 所有的比较结束,检查差别点计数器,判断文件是否相同
print('两个文件完全相同。')
|