#保存有限的歷史記錄咙冗,匹配當(dāng)前行和最后檢查過的N行文本
from collections import deque
def search(lines,pattern,history=5) :
? ? previous_lines = deque(maxlen = history)
? ? for line in lines :
? ? ? ? if pattern in line :
? ? ? ? ? ? yield line,previous_lines
? ? ? ? previous_lines.append(line)
? ? ? ? #print (previous_lines,"++++")
#Example use on a file
if __name__ == "__main__" :
? ? with open ("somefile.txt") as f :
? ? ? ? for line,prevlines in search(f,'python',5) :
? ? ? ? ? ? for pline in prevlines :
? ? ? ? ? ? ? ? print(pline,end="")
? ? ? ? ? ? ? ? #pass
? ? ? ? ? ? print (line,end="")
? ? ? ? ? ? print ("-"*20)
############
#補充說明:
q = deque(maxlen=3)
q.append(1)##類似于list,不過只保留最新出現(xiàn)的3個元素###在最后面插入元素####
q.appendleft(4)###在最前插入###
q.pop()####后面彈出一個
q.popleft()####前面彈出一個