Вы можете просто использовать список, добавлять к списку каждую строку (и усекать до последних 4).Когда вы достигнете целевой строки, все готово.
last_3 = []
with open("the_dst_file") as fw:
with open("the_source_file") as fr:
for line in fr:
if line.find("keyword") == 0:
fw.write(last_3[0] + "\n")
last_3 = []
continue
last_3.append(line)
last_3 = last_3[-3:]
Если формат файла известен таким образом, что перед «ключевым словом» всегда будет по крайней мере 3 строки перед ним и как минимум 3 строки междуслучаи, то выше это хорошо.Если нет, то вам нужно защититься от записи, проверив, что len last_3
имеет значение == 3, прежде чем снимать первый элемент.