| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如图: 
 
我写的代码如下: 
 
 
name1 = input("请输入需要比较的头一个文件名:") + ".txt" 
name2 = input("请输入需要比较的另一个文件名:") + ".txt" 
 
differ = []  #用列表differ记录所有不同的行# 
line = 0     #统计行数 
 
f1 = open(name1) 
f2 = open(name2) 
 
#比较两文件行数,确认一共需要对比多少次# 
line1 = len(list(f1)) 
line2 = len(list(f2)) 
if line1 >= line2: 
    lines = line1 
else: 
    lines = line2 
 
#开始对比# 
while line <= lines: 
    a = f1.readline() 
    b = f2.readline() 
    line += 1 
    if a != b: 
        list1.append(line) 
 
f1.close() 
f2.close() 
 
if len(differ) == 0: 
    print("两个文件完全一致") 
else: 
    print("两个文件一共有【%d】处不同处:"%(len(differ))) 
 
    for i in differ: 
        print("第",i,"行不一样") 
     
#哪里不对呢?# 
 
 
我的两个文件分别为something,something2:文件内容文如图,结果如图 
 
 
在list(f1)时已经读到文件末尾了,再readline就没有内容了。 
解决方案: 
1.直接比较两个列表 
2.将文件指针回到0位,再readline 
 
 
 |   
 
 
 
 |