我正在使用 difflib 比较两个目录中的文件(连续几年的版本)。首先,我使用 filecmp 来查找已更改的文件,然后迭代地使用 difflib.SequenceMatcher 来比较它们并生成一个 html 差异,如此处所述。
但是,我发现程序运行时间太长,并且 python 正在使用 100% CPU。在时间分析中,我发现seqm.get_opcodes()调用一直在占用。
任何见解将不胜感激。谢谢 !
代码:
#changed_set contains the files to be compared
for i in changed_set:
oldLines = open(old_dir +"/" + i).read()
newLines = open(new_dir +"/" + i).read()
seqm = difflib.SequenceMatcher(lambda(x): x in string.whitespace, oldLines, newLines)
opcodes = seqm.get_opcodes() #XXX: Lots of time spent in this !
produceDiffs(seqm, opcodes)
del seqm