Paginando arquivos em python

estou tentando fazer um programa que recebe um arquivo e, gera um novo arquivo a partir desse, porém, com enumeração de páginas e limite de caracteres por linhas.
estou tentando apresentar o número da página a cada 30 linhas e limitar cada linha com 76 caracteres, assim, se no arquivo original uma linha tiver mais, ela é quebrada e continua embaixo seguindo a mesma regra, mas não to conseguindo fazer. duas das minhas várias tentativas foram:

#aqui recebe o nome do arquivo que deseja paginar
nome_arq = input('arquivo> ')

with open(nome_arq, encoding='utf-8') as arq_or, open(f'2-{nome_arq}', 'w', encoding='utf-8') as nv_arq:
    #aqui foi uma tentativa de contar o número de linhas para pôr o número da página.
    nl = 1
    np = 1
    for i in arq_or:
        #aqui verificaria se a quantidade de linhas for divisível por trinta teria 
        #que adicionar uma linhas informando o número da página
        if nl%30==0:
            nv_arq.write(f'{np}')
            np+=1
        #aqui verificaria se cada linha tem mais de 76 caracteres
        if len(i) > 76:
            tl = len(i)
            #se tivesse repetiria esse processo até todos os caracteres fossem escritos
            while True:
                nv_arq.write(f'{i[:76]}')
                tl-=76
                if tl <= 0:
                    break
        else:
            nv_arq.write(f'{i[:]}')
        nl+=1
        

tentei também:

from math import ceil

nome = input('arquivo> ')

#verifica o a quantidade de linhas no arquivo.
tarq = open(nome, 'r')
j = 0
for i in tarq.readlines():
    j+=1
tarq.close()

with open(nome) as arq, open(f'2-{nome}', 'w') as nv_arq:
    #transforma o valor j na quantidade de páginas que terá o arquivo
    pag = 0
    for i in range(ceil(j/30)):
        lin = 0
        while lin < 29:
            nv_arq.write(f'{arq.readline()}')
            if lin == 28:
                pag+=1
                nv_arq.write(f'{pag}'.center(76))
            lin+=1

só que nenhum deu certo!!!
alguém sabe como fazer isso? :cold_sweat::cold_sweat: