Ir para conteúdo
Fórum Script Brasil
  • 0

Try não segue fluxo normal, causa desvio, qual a razão?


joagostini

Pergunta

Olá

Estou aprendendo Python e estou fazendo um exercício de crair um cadastro de pessoas, com nome e idade, simples. Mesmo simples eu devo criar arquivos, verificar se eles existem, e cadastrar novas pessoas.

Assim, ao pedir para abrir um arquivo, faço a verificação Try e Except que trata do FileNotFoundError. Se ele não exitir, pergunta-se se se quer criar o arquivo, aso o arquivo exisa, o fluxo do programa levaria a abrir o arquivo pesquisado. Qual o problema? Quando o arquivo Não Existe, o except funciona perfeitamente, ele diz que o arquivo não existe e pergunta se quero criá-lo. Mas quando o arquivo existe, em vez do programa seguir para a próxima instrução ela pula para a última e não me permite ver o arquivo pedido. Eis os trechos em questão:

#verificação da existência do arquivo

def existe():
    qual = input('Qual nome do cadastro? $ ').strip().lower()
    arquivo = 'cadastros/' + qual + '.txt'
    try:
        arquivo_existe = open(arquivo, 'rt')
        arquive_existe.close()
    except FileNotFoundError:
        print(f'Arquivo {arquivo} não encontrado!')
        sn = input('Quer criar arquivo? [S/N] $ ')
        if sn in 'Ss':
            cadastrar()

# em outro arquivo está onde ocorr a chamada da função acima

def principal():
    sim = 1
    while sim:
        menu()
        print('        Sua opção: $ ', end='')
        try:
            opç = int(input())
            if opç == 1:
                sub_menu('1')
                tempo()
                existe() #<-- chamada de existe, em tese, se o arquivo existe o fluxo deveria chegar em ver_cadastro
                ver_cadastro() #<-- deveria chegar aqui, mas vai para...(ver abaixo)
            elif opç == 2:
                sub_menu('2')
                tempo()
                cadastrar()
            elif opç == 3:
                sub_menu('3')
                tempo()
                break
        except (ValueError, TypeError):
            print('Valor invalido! Tente outra vez')
            continue
        while True:
            cont = str(input('Continua? [S/N] $ ').upper())
            if cont in 'Nn':
                sim = 0
                break  
            elif cont in 'Ss':
                sim = 1
                break
            elif cont.isspace() or cont.isdigit():
                print('Opção incorreta! Tente outra vez.')
            elif not cont:
                print('enter')
                continue
            else:
                print('Opção incorreta! Tente outra vez.') # <-- o Try de existe() desvia o fluxo para cá se o arquivo existe
                continue

Obrigado por qualquer contribuição.

Editado por joagostini
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...