我得到了包含300,000多行的txt文件A和包含600,000多行的txt文件B.现在我想要做的是逐行筛选文件A,如果该行没有出现在文件B中,那么它将被附加到文件C.
嗯,问题是,如果我像上面所说的那样编程,那么完成所有工作需要很长时间。那么有更好的方法吗?
答案 0 :(得分:14)
这应该非常快:
with open("a.txt") as a:
with open("b.txt") as b:
with open("c.txt", "w") as c:
c.write("".join(set(a) - set(b)))
请注意,这将忽略A或B中的任何订单。如果您绝对需要保留A的订单,您可以使用此:
with open("a.txt") as a:
with open("b.txt") as b:
with open("c.txt", "w") as c:
b_lines = set(b)
c.write("".join(line for line in a if not line in b_lines))
答案 1 :(得分:1)
你能把B放在记忆中吗?如果是这样,请读取文件B并使用其包含的所有行创建索引。然后逐行阅读A并检查每一行是否出现在索引中。
with open("B") as f:
B = set(f.readlines())
with open("A") as f:
for line in f.readlines():
if line not in B:
print(line)
答案 2 :(得分:0)
对python一无所知,但是:如何将文件A排序成特定的顺序?然后你可以逐行浏览文件B并进行二进制搜索 - 效率更高。
答案 3 :(得分:0)
将文件B中的所有行读入set
:
blines = set(file_b)
for line in file_a:
if not line in blines:
append_to_file_c
600k +真的不是那么多数据......