Я читаю файл в Python, где каждая запись отделена пустой новой строкой. Если файл заканчивается двумя или более новыми строками, последняя запись обрабатывается, как и ожидалось, но если файл заканчивается одной новой строкой, она не обрабатывается. Вот код:
def fread():
record = False
for line in open('somefile.txt'):
if line.startswith('Record'):
record = True
d = SomeObject()
# do some processing with line
d.process(line)
if not line.strip() and record:
yield d
record = False
for record in fread():
print(record)
В этом примере данных все работает как положено ('---' - пустая строка):
Запись 1
данные
данные b
данные с
\ П
Запись 2
данные
данные b
данные с
\ П
\ П
Но при этом последняя запись не возвращается:
Запись 1
данные
данные b
данные с
\ П
Запись 2
данные
данные b
данные с
\ n
Как сохранить последнюю новую строку из файла, чтобы получить последнюю запись?
PS .: Я использую термин «консервировать», так как не смог найти лучшего названия.
Спасибо.
Редактировать
Исходный код был раздетой версией, просто чтобы проиллюстрировать проблему, но кажется, что я раздет слишком много. Теперь я разместил код всей функции.
Еще немного объяснений: объект SomeObject
создается для каждой записи в файле, и записи разделяются пустыми новыми строками. В конце записи он возвращает объект, чтобы я мог его использовать (сохранить в БД, сравнить с другими объектами и т. Д.).
Основная проблема, когда файл заканчивается одной новой строкой, последняя запись не возвращается. Кажется, что Python не читает последнюю строку, когда она пуста.