[英]How to make this python script faster?
我试图从两个列表中找到一个重叠列表。 我首先生成第一个列表
while True:
line=f.readline()
if not line:
break
list_1.append(line)
并使用此列表浏览第二个文件:
while True:
line1=f1.readline()
if not line1:
break
for i in list_1:
if i==line1[:17]:
list_2.append(line1)
ThiefMasters答案将以任意顺序输出公共行。 如果要以与在一个文件中出现的顺序相同的顺序输出项目,请首先将另一个文件读入一组:
with open("file1.txt") as f:
file1_set = set(f)
然后搜索控制顺序的文件:
with open("file2.txt") as f:
list2 = [line for line in f if line in file1_set]
如果生成的list2
不能容纳在内存中(我想这是相当遥不可及的),我们仍然可以通过将结果连续写回到输出文件中来使其工作:
with open("file2.txt") as f:
with open("out.txt", "w") as out:
for line in f:
if line in file1_set:
out.write(line)
只要没有一个文件太大,就将所有行存储在集合中 ,然后比较这些集合:
lines_1 = set(f)
lines_2 = set(f1)
lines_in_both = lines_1 & lines_2
如果要查找两个文件之间的差异,则还可以使用difflib模块,该模块包含在python标准库中。 该模块提供用于比较序列的类和功能。 例如,它可以用于比较文件,并可以产生各种格式的差异信息,包括HTML和上下文以及统一的diff。 您可以在difflib文档中找到有用的比较方法。
difflib.SequenceMatcher(None, file1.read(), file2.read())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.