我有两个要比较的文本文件,输出匹配或不匹配。我的节目输出"不匹配"即使我尝试比较相同的文本文件而不是将输出作为匹配。
pthread_create
答案 0 :(得分:1)
逐行比较两个文件时,不应使用嵌套循环。例如,
fragment
这意味着,“对于for l1 in f1:
for l1 in f2:
...
中的每一行,将该行与f1
中的每一行进行比较”,这在语义上没有意义。
您应该做的是比较相应的行。最简单的方法是使用f2
。
zip
这意味着“将for l1, l2 in zip(f1, f2):
...
中的每一行与f1
中的相应行进行比较”,这是有道理的。
接下来,您似乎只想查看两行是否相等,并相应地打印一条消息。在这种情况下,您可以使用f2
语句缩短比较时间。使用break
成语,因此您不需要标记或计数器。
for...else
for l1, l2 in zip(f1, f2):
if l1 != l2:
print('not matched')
break
else:
print "matched"
仅在循环自然退出时运行 - 换句话说,在未遇到else
时运行。
但是,如果您要检索所有不相等的行的计数,则可以使用break
生成器理解 -
sum
这里的想法是你可以在diff = sum(1 for l1, l2 in zip(f1, f2) if l1 != l2)
print('not matched' if diff else 'matched')
之后做一些有用的事情。