本段代码实现:比较两个相似的文件,并打印出文件的不同之处。
分行读取两个文件的内容,并依次比较每一行的内容,直至读取到最后一行。
对于文件较大的内容,不介意使用一次性读取,这样会导致占用内存过大导致程序崩溃。
import filecmp
def compareFile(filea,fileb):
if not filecmp.cmp(filea,fileb): #若文件有不同,则依次比较每一行内容
readfilea = open(filea,'r')
readfileb = open(fileb,'r')
while True:
linefilea = readfilea.readline().strip() #一行一行的读取并比较
linefileb = readfileb.readline().strip()
if linefilea and linefileb:
if linefilea != linefileb:
print('有不同! 前者内容为:', linefilea, '后者内容为:', linefileb)
else:
break
readfilea.close()
readfileb.close()
else:
print('服务返回字段都相同')
compareFile(r'.\MomentsAfter.txt', r'.\MomentsBefore.txt')
期间遇到的问题:
1、使用open函数若使用二进制模式打开一个文件,对换行符号的识别是有区别的
'\r\n' '\n'
2、关于readline():一行一行的读取文本中的内容
一行读取完之后继续调用readline()会接着读取下一行,直至文件中的内容被读取完毕。