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
Pergunta
joagostini
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 joagostiniLink 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.