Jogo da forca em python que armazena os 5 melhores jogadores

vai se rum pouco grande, mas, por favor tenham paciência…
estou tentando fazer um jogo da velha que armazena os 5 melhores jogadores em um arquivo, porém, não estou conseguindo fazer que o programa verifique se o nome de um jogador já está armazenado nesse arquivo ou se ainda não está, nem que o programa verifique se a pontuação do jogador pode mesmo estar entre os 5 melhores. segue o código:

import random

#nesse arquivo chamado palavras_jogo_da_forca.txt é um arquivo separado que tem as palavra do jogo
nome_plr = input('nome> ')
arq_plv = open('palavras_jogo_da_forca.txt', 'r', encoding='utf-8')
lista_palavra = []

#todas as palavras do jogo são repassadas para a lista lista_palavra nesse loop 
for i in arq_plv.readlines():
    lista_palavra.append(i.split(', '))
    
#aqui o arquivo que tem as palavras é fechado
arq_plv.close()

#nessa variável é escolhida uma palavra aleatória da lista, q na verdade é matrisz, pois, como pode ver,
#precisou de duas coordenadas para ser encontrada
palavra = lista_palavra[0][random.randint(0, len(lista_palavra[0])-1)]

#aqui são lista criadas para verificar todas as jogadas  do jogo
digitadas = []
acertos = []
#aqui é a pontuação, se o jogador vencer a partida ganha um ponto
pontuação = 0
#aqui contam os erros durando o jogo, se erros for igual a 6 o jogador perde
erros = 0

#aqui seriam todos os movimentos do jogo propriamente dito
while True:
    senha = ''
    for letra in palavra:
        senha += letra if letra in acertos else '.'
    print(senha)
    if senha == palavra:
        print('você acertou!')
        #aqui é o final da partida, nesse caso, se o jogador venceu a pontuação é somada com 1
        pontuação+=1
        break
    tentativa = input('Digite uma letra: ').lower().strip()
    if tentativa in digitadas:
       print('você já tentou esta letra!')
       continue
    else:
        digitadas += tentativa
        if tentativa in palavra:
            acertos += tentativa
        else:
            erros += 1
            print('você errou')
        print('X==:==\nX  :  ')
        print('X  O  ' if erros >= 1 else 'X')
        linha2 = ''
        if erros == 2:
            linha2 = '  |  '
        elif erros == 3:
            linha2 = ' \|  '
        elif erros >= 4:
            linha2 = ' \|/ '
        print(f'X{linha2}')
        linha3 = ''
        if erros == 5:
            linha3 += ' /   '
        elif erros >= 6:
            linha3 += ' / \ '
        print(f'X{linha3}')
        print('X\n==========')
        if erros == 6:
            print('Enforcado!')
            print(f'a palavra secreta era: {palavra}')
            break

#aqui é onde estou com dúvidas:
#aqui verifica se o arquivo com a pontuação dos jogadores já existe...
try:
    with open('pontuação_melhores_jogo_da_forca.txt', 'r', encoding='utf=8') as arq_plr:
        j=0
        for i in arq_plr.readlines():
            j+=1
#caso não, o arquivo é criado aqui
except:
    cria_arq = open('pontuação_melhores_jogo_da_forca.txt', 'w', encoding='utf=8')
finally:
    arq_plr = open('pontuação_melhores_jogo_da_forca.txt', 'a+', encoding='utf=8')
    #e, finalmente, o programa verifica se as 5 primeiras posições já estão ocupada...
    if j > 5:
        arq_plr.close()
    #caso não, ele deveria verificar se o nome da pessoa já está no arquivo e se estivesse, soma sua pontuação
    #com a já arquivada, porém, não funciona. Pelo menos eu não conseguir fazer funcionar.
    else:
        if pontuação != 0:
            if nome_plr not in arq_plr:
                arq_plr.write(f'{nome_plr} : ')
                arq_plr.write(f'{pontuação}')
                arq_plr.write('\n')
            else:
                arq_plr.write(f'{pontuação}')
                arq_plr.write('\n')
    arq_plr.close()

gostaria de saber tbm se teria como otimizar o programa a partir do try pois, dessa forma está sendo necessário abrir e fechar o arquivo duas vezes.
quem puder ajudar eu agradeço…