Я читаю файл на Python, где каждая запись разделяется пустой новой строкой. Если файл заканчивается двумя или более новыми строками, последняя запись обрабатывается, как ожидалось, но если файл заканчивается в одной новой строке, он не обрабатывается. Here's код:Сохранение последней новой строки при чтении файла
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
данные
данные б
данные гр
\ N
Запись 2
данные А
данных B
данные с
\ п
\ п
Но в этом, последняя запись не правда вернулся:
Запись 1
данные
данные б
данные с
\ n
Запись 2
данные a
данные б
данные с
\ п
Как я могу сохранить последнюю новую строку из файла, чтобы получить последнюю запись?
PS: Я использую термин «сохранить», поскольку я не мог найти лучшего имени.
Спасибо.
Редактировать Исходный код был разделенной версией, просто чтобы проиллюстрировать проблему, но, похоже, я разделил слишком много. Теперь я разместил весь код функции.
Немного больше объяснений: Объект SomeObject
создан для каждой записи в файле, а записи разделены пустыми новыми строками. В конце записи он возвращает объект обратно, поэтому я могу использовать его (сохранить в db, сравнить с другими объектами и т. Д.).
Основная проблема, когда файл заканчивается в одной новой строке, последняя запись не выводится. Кажется, что Python не читает последнюю строку, когда она пуста.
Вы правильно поняли, и я редактировал свой пост, чтобы быть более четким, чем я хочу. Ваш подход очень хорош и решает мою проблему, большое спасибо, но, все же, почему Python не читает последнюю строку, когда она пуста? –