繁体   English   中英

比较python中的两个文本文件并计算差异

[英]Comparing two text files in python and counting the differences

嗨,我一直在尝试比较 Python 中的两个文本文件,基本上我想打开它们并一次比较一个字符,如果字符不同,则将 1 添加到计数器,然后显示该值。

这是我到目前为止所拥有的:

#!/usr/bin/env python

diff = 0

import random
import string
import sys

file_A = sys.argv[1]
file_B = sys.argv[2]

read_A=open(file_A,'r').read()
read_B=open(file_B,'r').read()

for a in read_A:
    for b in read_B:
        if a != b:
            diff = diff + 1
    return diff
break

print "No of Differences ",diff

现在它确实计数,但它返回的值似乎不正确。

任何建议或帮助将不胜感激

最简单的方法是使用difflib 它不需要任何额外的python鸡蛋,并且可以很好地跟踪各种diff检查。 差异检查的结果将是您期望检查是否相等以及紧密匹配的结果。 如果允许对结果进行加权,那也可能很重要。

循环不一定是执行此操作的Python方法。 无需使用任何外部库,就可以使用简单的列表推导来查找两个文件之间的差异实例:

如果顺序很重要:

x=[i for i, j in zip(read_A, read_B) if i != j]
print len(x)

如果订单显著:

x=[i in read_B for i in read_A]
#Now count the instances where the comparison resulted in False
i = x.count(False)

如果您有两个要逐个字符比较的字符串,则最好压缩它们。

因此,一旦执行此操作:

read_A=open(file_A,'r').read()
read_B=open(file_B,'r').read()

你做:

for char_a, char_b in zip(read_A, read_B):
    if char_a != char_b:
        # something

如果文件很大,您可能希望仅逐个字符地读取字符,并使用izip而不是zip ...

顺便说一句...

您没有关闭文件。 始终以这种方式访问​​文件是一个好主意:

with open(file_A, 'r') as f1:
    read_A = f1.read()

with open(file_B, 'r') as f2:
    read_B = f2.read()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM