I suggest using a double ended queue with a maximum length: this way, only the required amount of "backlog" is stored and you don't have to fiddle around with slices manually. We don't need the "double-ended-ness", but the normal Queue class blocks if the queue is full.
import collections
dq = collections.deque([], 3)        # create an empty queue
with open("mybigfile.txt") as file:
    for line in file.readlines():
        if line.startswith('<seg>'):
            return dq[0]             # or add to list
        dq.append(line)              # save the line, if already 3 lines stored,
                                     # discard oldest line.