有没有一种简单的方法来比较Python中的2个文件而忽略某些行?我想忽略Python样式注释(以#开头的行)并检查所有其他行是否相同。我想总是逐行读取文件并手动比较。
答案 0 :(得分:3)
首先从两个文件中删除注释。然后使用Differ
比较生成的文件。
答案 1 :(得分:1)
您是否只想报告它们是相同还是不同?或者你也想知道它们不同的第一个地方,或者你想知道它们不同的所有地方?
我假设您想知道它们不同的第一行。首先,帮助函数读取非注释行,并包含行号信息:
def read_non_comment_lines(infile):
for lineno, line in enumerate(infile):
if line[:1] != "#":
yield lineno, line
比较两个输入流并报告它们何时不同:
import itertools
with open(filename1) as f1:
with open(filename2) as f2:
for (lineno1, line1), (lineno2, line2) in itertools.izip(
read_non_comment_lines(f1), read_non_comment_lines(f2)):
if line1 != line2:
print "Different at %s:%d and %s:%d" % (filename1, lineno1+1, filename2, lineno2+1)
break
else:
print "They are identical."