我有两个文件,其内容如下所示
#version 17.3
#0092的配置信息
#ssgs的数据
#州:NA
#长度:NA
#生成于4月29日星期三10:30:12 2015年
------------------------------------
其余的数据
------------------------------------
我想在忽略以“#”开头的行后比较2个文件
我尝试了文件比较模块,它在块级进行比较(阅读
整个文件作为一个块并进行比较)。我写了一个简单的代码来做行
通过线对比,它似乎不起作用。
def extract_lines(文件):
对于枚举(文件)中的行:
if line!=“#”:
屈服线
open(file1)为f1:
打开(file2)为f2:
for(line1),(line2)in itertools.izip(
extract_lines(f1),extract_lines(f2)):
如果line1!= line2:
打印“他们是不同的”
打破
其他:
打印“他们是相同的。
答案 0 :(得分:2)
在extract_lines
函数中,而不是
for line in enumerate(files):
if line!= "#":
你应该这样做:
for line in files:
if not line.startswith("#"):
答案 1 :(得分:1)
我认为你是在比较由于压缩而成对的线,你可以使用两个生成器表达式将它们压缩在一起以过滤以#
开头的行:
from itertools import izip
with open("in1.txt") as f, open("in2.txt") as f2:
a = (line for line in f if not line.startswith("#"))
b = (line for line in f2 if not line.startswith("#"))
for l1, l2 in zip(a ,b):
print(l1,l2)