我曾尝试在网上搜索答案,但不幸的是没有成功。因此我在这里问:
我试图弄清楚是否所有行都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
示例文件2:
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.
编辑:我刚刚为其他人添加了我的代码的工作版本。没有内存错误,但速度很慢。