Python 比较两个文件时忽略空行

Python 比较两个文件时忽略空行,python,Python,我有一个比较函数,它接收两个文件并逐行比较它们的内容。问题是,它不忽略空白行。因此,如果我将以下内容作为文件1 Active Internet connections Proto Recv-Q Send-Q Local Address Foreign Address (state) rxbytes txbytes tcp4 0 0 192.168.1.6.50860 72.21.91.29.http

我有一个比较函数,它接收两个文件并逐行比较它们的内容。问题是,它不忽略空白行。因此,如果我将以下内容作为文件1

Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)        rxbytes    txbytes
tcp4       0      0  192.168.1.6.50860      72.21.91.29.http       CLOSE_WAIT         892        691
tcp4       0      0  192.168.1.6.50858      www.v.dropbox.co.https ESTABLISHED      27671       7563
tcp4       0      0  192.168.1.6.50857      162.125.17.1.https     ESTABLISHED      17581       3642
并将其与以下文件2进行比较

Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)        rxbytes    txbytes
tcp4       0      0  192.168.1.6.50860      72.21.91.29.http       CLOSE_WAIT         892        691




tcp4       0      0  192.168.1.6.50858      www.v.dropbox.co.https ESTABLISHED      27671       7563
tcp4       0      0  192.168.1.6.50857      162.125.17.1.https     ESTABLISHED      17581       3642
<> P>将空白行与文件中的内容进行比较。我尝试使用
strip()
,但它删除了每个字符之间的所有空格,这是我不想要的。有没有办法删除每行后面的空行?我已经突出显示了代码的相关部分

def compare(baseline, newestFile):



    baselineHolder = open(baseline)
    newestFileHolder = open(newestFile)

    lines1 = baselineHolder.readlines()
    a = returnName(baseline)
    b = returnName(newestFile)

    for i,lines2 in enumerate(newestFileHolder):
            if not (isEmpty(baseline)) and not (isEmpty(newestFile)):
                if lines2 != lines1[i]:
                    add1 = i + 1
                    print ("line ", add1, " in newestFile is different \n")
做一些类似于:

def non_empty_readline(f):
    line = ""
    while not line:
       line = f.readline().strip()
    return line
然后从代码中调用这两个函数(您需要一种方法在不影响整体循环结构的情况下,在空行上前进到下一行)。

执行以下操作:

def non_empty_readline(f):
    line = ""
    while not line:
       line = f.readline().strip()
    return line
然后从代码中调用这两行(您需要一种方法在不影响整体循环结构的情况下,在空行上前进到下一行)。

替换这一行

for i,lines2 in enumerate(newestFileHolder):

映射编辑空白,过滤器删除空行

同意@PeterWood的评论,difflib是一种更好的方式来取代这一行

for i,lines2 in enumerate(newestFileHolder):

映射编辑空白,过滤器删除空行

同意@PeterWood的评论,difflib是一种更好的方法

不会删除字符串前后的所有空格。你知道内置的吗?不会删除字符串前后的所有空格。您知道内置的吗?