непроверенная.По сути, вы хотите сохранить кэш «непрочитанных» строк.При каждом чтении строки, если в кеше что-то есть, вы сначала вынимаете его из кеша.Если в кеше ничего нет, прочитайте новую строку из файла.Это грубо, но должно помочь вам.
lineCache = []
def pushLine(line):
lineCache.append(line)
def nextLine(f):
while True:
if lineCache:
yield lineCache.pop(0)
line = f.readline()
if not line:
break
yield line
return
f = open('myfile')
for line in nextLine(f):
# if we need to 'unread' the line, call pushLine on it. The next call to nextLine will
# return the that same 'unread' line.
if some_condition_that_warrants_unreading_a_line:
pushLine(line)
continue
# handle line that was read.