28 lines
726 B
Python
28 lines
726 B
Python
#!/usr/bin/env python
|
||
# -*- encoding: utf-8 -*-
|
||
"""
|
||
Topic: collections.deque演示
|
||
Desc : deque有一个maxlen参数,当append的时候,如果超过,那么最前面的就被挤出队列。
|
||
"""
|
||
from collections import deque
|
||
|
||
|
||
def search(lines, pattern, history=5):
|
||
previous_lines = deque(maxlen=history)
|
||
for li in lines:
|
||
if pattern in li:
|
||
yield li, previous_lines
|
||
previous_lines.append(li)
|
||
|
||
# Example use on a file
|
||
if __name__ == '__main__':
|
||
with open(r'../../cookbook/somefile.txt') as f:
|
||
for line, prevlines in search(f, 'Python', 5):
|
||
for pline in prevlines:
|
||
print(pline, end='')
|
||
print(line, end='')
|
||
print('-' * 20)
|
||
|
||
|
||
|