Python 比较两个文件时忽略空行
我有一个比较函数,它接收两个文件并逐行比较它们的内容。问题是,它不忽略空白行。因此,如果我将以下内容作为文件1Python 比较两个文件时忽略空行,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
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是一种更好的方法不会删除字符串前后的所有空格。你知道内置的吗?不会删除字符串前后的所有空格。您知道内置的吗?