Чтение в файле блок за блоком, используя указанный разделитель в Python

У меня есть файл input_file.fa, ​​как это (FASTA формат):

> header1 description
data data
data
>header2 description
more data
data
data

Я хочу прочитать в файле один блок за раз, чтобы каждый блок содержал один заголовок и соответствующие данные, например, блок 1:

> header1 description
data data
data

Конечно, я мог бы просто прочитать в файле, как это и разделить:

with open("1.fa") as f:
    for block in f.read().split(">"):
        pass

НоЯ хочу избежать чтения всего файла в памятьпотому что файлы часто большие.

Я могу читать в файле строка за строкой, конечно:

with open("input_file.fa") as f:
    for line in f:
        pass

Но в идеале я хочу что-то вроде этого:

with open("input_file.fa", newline=">") as f:
    for block in f:
        pass

Но я получаю ошибку:

ValueError: недопустимое значение новой строки:>

Я также пытался использоватьмодуль CSV, но безуспешно.

Я нашелэта почта 3 года назад, который предоставляет решение этой проблемы на основе генератора, но это не кажется таким компактным, действительно ли это единственное / лучшее решение? Было бы здорово, если бы можно было создать генератор с одной строкой, а не с отдельной функцией, что-то вроде этого псевдокода:

with open("input_file.fa") as f:
    blocks = magic_generator_split_by_>
    for block in blocks:
        pass

Если это невозможно, то я думаю, вы могли бы считать мой вопрос дубликатом другого поста, но если это так, я надеюсь, что люди смогут объяснить мне, почему другое решение является единственным. Большое спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос