我试过在线搜索答案,但不幸的是没有成功。因此,我在这里问:测试file1中的行是否是file2中的行的子集
我想弄清楚file1
中的所有行是否存在file2
。幸运的是,我可以比较整行而不是单个单词等。不幸的是,我正在处理GB文件,因此我尝试过的一些基本解决方案给我带来了内存错误。
目前我有下面的代码不起作用。一些指导将非常感谢。
# Checks if all lines in file1 are present in file2
def isFile1SubsetOfFile2(file1 , file2):
file1 = open(file1, "r")
for line1 in file1:
with open(file2, "r+b") as f:
mm=mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
my_str_as_bytes = str.encode(line1)
result = mm.find(line1.strip().encode())
print(result)
if result == -1:
return False
return True
样品file2的:
This is line1.
This is line2.
This is line3.
This is line4.
This is line5.
This is line6.
This is line7.
This is line8.
This is line9.
应该通过例如如果file1是:
This is line4.
This is line5.
例如, file1是:
This is line4.
This is line10.
编辑:我刚刚添加了我的代码的工作版本,为他人带来好处。没有内存错误,但非常慢。
Ick,你的代码是'O(m * n)'。在'O(m log m + n log n)'中做这件事是微不足道的,有时候在'O(m + n)'中有可能。 – o11c
你对Algo复杂性的评论等于我的头上。 – Ali
然后在你学习*任何其他*关于编程,学习算法复杂性和大O符号。这个很重要*。 – o11c