|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #编写一个程序,比较用户输入的两个文件,如果不同,
- #显示出所有不同处的行号与第一个不同字符的位置,程序实现如图:
- title1=input('请输入需要比较的第1个文件名:')
- title2=input('请输入需要比较的第2个文件名:')
- #---------------------------写入文件------------------------------
- context_1=[]
- context_2=[]
- #向第一个文件写入
- message_1=''
- while message_1 != ':w':
- message_1 = input('请输入第一个文件的内容【单独输入‘:w’保存退出】:')
- if message_1 != ':w':
- context_1.append(message_1)
- context_1.append(' \r\n') #存入换行符
- print('')
- #向第二个文件写入
- message_2=''
- while message_2 != ':w':
- message_2 = input('请输入第二个文件的内容【单独输入‘:w’保存退出】:')
- if message_2 != ':w':
- context_2.append(message_2)
- context_2.append(' \r\n')
- final_tltle_file_1 = title1 + '.txt'
- final_tltle_file_2 = title2 + '.txt'
- final_1 = open(final_tltle_file_1,'w+')
- final_2 = open(final_tltle_file_2,'w+')
- final_1.writelines(context_1)
- final_2.writelines(context_2)
- final_1.close()
- final_2.close()
- #---------------------------文件比较----------------------------
- final_tltle_1=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_1.txt","r")
- final_tltle_2=open(r"C:\Users\Administrator\Desktop\python\final_tltle_file_2.txt","r")
- code_1=[]
- code_2=[]
- count=[] #存放不相同的行数的位置
- for each_1 in final_tltle_1:
- code_1.append(each_1) #将文件中的每一行内容,存入列表
- for each_2 in final_tltle_2:
- code_2.append(each_2)
-
- for i in range(min(len(code_1),len(code_2))): #若两个列表长度不一致的情况,取较小,避免报错
- if code_2[i] != code_1[i]:
- count.append(i)
- print('count=',count)
- #----------------------文件行数相等时的比较-------------------------
- if len(code_1) == len(code_2): #两个列表的长度就是文件内容的行数,判断行数是否相等
- print('两个文件共有【',len(count),'】处不同')
- for j in range(len(count)):
- print('第',j,'行不一样')
- #----------------------文件行数不相等时的比较-------------------------
-
- #两个文件行数不同时,文件多余的那几行,必然与另一个文件对应的那几行是不同的
- #用较长的列表减去较短的列表,得到多余的那几行,加上先前比较的不相等的行数,得到最后的不相等的总行数
- else:
- redundant=max(len(code_1),len(code_2))-min(len(code_1),len(code_2))
- print('两个文件共有【',len(count)+redundant,'】处不同')
- for j in range(len(count)):
- print('第',j,'行不一样') #打印相比之后不相等的行数
- for m in range((min(len(code_1),len(code_2)))+1,(max(len(code_1),len(code_2)))+1):
- print('第', m ,'行不一样') #打印长度多出来的那几行
-
- final_tltle_file_1.close()
- final_tltle_file_2.close()
复制代码 |
|