用python比较两个文件中内容的不同之处, 并输出行号和内容.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python比较两个文件中内容的不同之处, 并输出行号和内容.相关的知识,希望对你有一定的参考价值。

代码部分:
‘‘‘cmpfile.py - 比对两个文件, 如果有不同之处, 打印内容和行号‘‘‘

import os

class cmpFile:

    def __init__(self, file1, file2):
        self.file1 = file1
        self.file2 = file2

    def fileExists(self):
        if os.path.exists(self.file1) and                 os.path.exists(self.file2):
            return True
        else:
            return False

    # 对比文件不同之处, 并返回结果
    def compare(self):
        if cmpFile(self.file1, self.file2).fileExists():
            fp1 = open(self.file1)
            fp2 = open(self.file2)
            flist1 = [i for i in fp1]
            flist2 = [x for x in fp2]

        flines1 = len(flist1)
        flines2 = len(flist2)
        if flines1 < flines2:
            flist1[flines1:flines2+1] = ‘ ‘ * (flines2 - flines1)
        if flines2 < flines1:
            flist2[flines2:flines1+1] = ‘ ‘ * (flines1 - flines2)

        counter = 1
        cmpreses = []
        for x in zip(flist1, flist2):
            if x[0] == x[1]:
                counter +=1
                continue

            if x[0] != x[1]:
                cmpres = ‘%s和%s第%s行不同, 内容为: %s --> %s‘ %                          (self.file1, self.file2, counter, x[0].strip(), x[1].strip())
                cmpreses.append(cmpres)
                counter +=1
        return cmpreses

if __name__ == ‘__main__‘:
    cmpfile = cmpFile(‘a1.txt‘, ‘a2.txt‘)
    difflines = cmpfile.compare()
    for i in difflines:
        print(i, end=‘\n‘)

执行结果

a1.txt和a2.txt第4行不同, 内容为:  --> 4444444444444444444
a1.txt和a2.txt第5行不同, 内容为: sfsdfasdf --> 5555555555555555555
a1.txt和a2.txt第7行不同, 内容为: fasdfasdf --> sfsdfasdf
a1.txt和a2.txt第8行不同, 内容为: 1111111111111111111 --> 
a1.txt和a2.txt第9行不同, 内容为: 2222222222222222222 --> fasdfasdf
a1.txt和a2.txt第10行不同, 内容为: 3333333333333333333 --> 
a1.txt和a2.txt第11行不同, 内容为: 4444444444444444444 --> 
a1.txt和a2.txt第12行不同, 内容为: 5555555555555555555 --> 
a1.txt和a2.txt第13行不同, 内容为:  --> 
a1.txt和a2.txt第14行不同, 内容为: sfsdfasdf --> 
a1.txt和a2.txt第15行不同, 内容为:  --> 
a1.txt和a2.txt第16行不同, 内容为: fasdfasdf --> 
a1.txt和a2.txt第17行不同, 内容为: 1111111111111111111 --> 
a1.txt和a2.txt第18行不同, 内容为: 2222222222222222222 --> 
a1.txt和a2.txt第19行不同, 内容为: 3333333333333333333 --> 
a1.txt和a2.txt第20行不同, 内容为: 4444444444444444444 --> 
a1.txt和a2.txt第21行不同, 内容为: 5555555555555555555 --> 
a1.txt和a2.txt第22行不同, 内容为:  --> 
a1.txt和a2.txt第23行不同, 内容为: sfsdfasdf --> 
a1.txt和a2.txt第24行不同, 内容为:  --> 
a1.txt和a2.txt第25行不同, 内容为: fasdfasdf --> 
a1.txt和a2.txt第26行不同, 内容为: 1111111111111111111 --> 
a1.txt和a2.txt第27行不同, 内容为: 2222222222222222222 --> 
a1.txt和a2.txt第28行不同, 内容为: 3333333333333333333 --> 
a1.txt和a2.txt第29行不同, 内容为: 4444444444444444444 --> 
a1.txt和a2.txt第30行不同, 内容为: 5555555555555555555 --> 
a1.txt和a2.txt第31行不同, 内容为:  --> 
a1.txt和a2.txt第32行不同, 内容为: sfsdfasdf --> 
a1.txt和a2.txt第33行不同, 内容为:  --> 
a1.txt和a2.txt第34行不同, 内容为: fasdfasdf --> 

以上是关于用python比较两个文件中内容的不同之处, 并输出行号和内容.的主要内容,如果未能解决你的问题,请参考以下文章

用于比较两个不同目录中文件内容的Python程序

linux比较两个文件

怎样用Beyond Compare比较两个excel表格文件差异

Python 文件目录比较工具filecmp和difflib

在 Python 中,有没有比较简洁的方法来比较两个文本文件的内容是不是相同?

diff 比较两个文件的不同