Jump to content
Fórum Script Brasil
  • 0

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


Question

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.

Edited by joagostini
Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0
    ver_cadastro()
NameError: name 'ver_cadastro' is not defined

aqui funcionou de acordo, foi ate a indicação que a função não esta definida

Edited by ArteEN
Link to post
Share on other sites
  • 0
25 minutos atrás, ArteEN disse:
    ver_cadastro()
NameError: name 'ver_cadastro' is not defined

aqui funcionou de acordo, foi ate a indicação que a função não esta definida

Obrigado. Duro saber o que não esta funcionando aqui.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148681
    • Total Posts
      644506
×
×
  • Create New...