Here's a generic generator to truncate any iterable:
from collections import deque
def truncate(iterable, num):
buffer = deque(maxlen=num)
iterator = iter(iterable)
for n in range(num):
buffer.append(next(iterator))
for item in iterator:
yield buffer.popleft()
buffer.append(item)
truncated_range20 = truncate(range(20), 5)
print(list(truncated_range20))
Using truncate, you can do this:
from __future__ import print_function
import sys
from itertools import islice
filepath = sys.argv[1]
with open(filepath, 'rb') as f:
for line in truncate(islice(f, 6, None), 5):
print(line, end='')
source
share