Ir para conteúdo
Fórum Script Brasil

joagostini

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Posts postados por joagostini

  1. 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.

×
×
  • Criar Novo...