我試過在線搜索答案,但不幸的是沒有成功。因此,我在這裏問:測試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