擅长:python、mysql、java
<p>您的代码效率极低,因为您<code>open</code>循环中的第二个文件迭代第一个文件。只需将第二个文件读入一个列表(或者更好的是,一个<code>set</code>,它提供了平均<code>O(1)</code>查找时间)并使用<code>in</code>运算符。另外,您的<code>linecnt</code>变量只计算file1中的行数-您可以将这些行读入一个列表中,然后调用该列表上的<code>len</code>来获得相同的行数:</p>
<pre><code>def compfiles(file1, file2):
lines1 = [l.strip() for l in open(file1).read().split("\n")]
lines2 = set([l.strip() for l in open(file2).read().split("\n")])
for line in lines1:
if not line in lines2:
print("Miss: file %s contains '%s', but file %s does not!" % (file1, line, file2))
print("%i lines compared between %s and %s." % (len(lines1), file1, file2))
</code></pre>