Lendo bloco por arquivo usando delimitador especificado em python

Eu tenho um arquivo input_file.fa como este (FASTA formato):

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

Quero ler no arquivo um pedaço de cada vez, para que cada pedaço contenha um cabeçalho e os dados correspondentes, por exemplo Bloco 1:

> header1 description
data data
data

Claro que eu poderia simplesmente ler o arquivo assim e dividir:

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

MasEu quero evitar a leitura de todo o arquivo na memória, porque os arquivos geralmente são grandes.

Eu posso ler o arquivo linha por linha, é claro:

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

Mas, idealmente, o que eu quero é algo como isto:

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

Mas eu recebo um erro:

ValueError: valor ilegal de nova linha:>

Eu também tentei usar omódulo csv, mas sem sucesso.

Eu encontreiesta postagem de 3 anos atrás, que fornece uma solução baseada em gerador para esse problema, mas não parece tão compacto, essa é realmente a única / melhor solução? Seria interessante se fosse possível criar o gerador com uma única linha em vez de uma função separada, algo como este pseudocódigo:

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

Se isso for impossível, acho que você poderia considerar minha pergunta uma duplicata da outra postagem, mas, se for assim, espero que as pessoas possam me explicar por que a outra solução é a única. Muito Obrigado.

questionAnswers(3)

yourAnswerToTheQuestion