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() 函数返回 False
if 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次)