def find_multiline_content(file_path, multiline_content):with open(file_path, 'r') as file:# 文件内容file_lines = file.readlines()# 待检测内容multiline_lines = multiline_content.strip().split('\n')# 待检测内容总行数num_multiline_lines = len(multiline_lines)matching_lines = []for i in range(len(file_lines) - num_multiline_lines + 1):window = file_lines[i:i + num_multiline_lines]# all() 函数接受一个可迭代对象作为参数,仅当可迭代对象中的所有项的计算结果为 True,或可迭代对象为空时才返回 True。在所有其他情况下,all() 函数返回 Falseif all(multiline_lines[j].strip() == window[j].strip() for j in range(num_multiline_lines)):matching_lines.append(i + 1)return matching_lines
window为一个滑动窗口,可以滑动的次数为【文件总行数 - 内容的行数】:
例如文件总共为10行,而内容行数为5行,那么滑动的次数为5次(for i in range(len(file_lines) - num_multiline_lines + 1)
的i即为滑动次数)。
我们可以看到①号,从1开始,可以从数字2(滑动1次),滑到数字6(滑动5次)