Python Login and Registration System

Asked

Viewed 2,252 times

1

I am trying to develop a simple registration and login system using text files, but at the time of login is giving error.

I believe it is in the variable "Registered", because from what I understood by the command a.readlines() it reads and turns into a list, but when I check if it is element of the list gives error....

#-*- coding: utf-8
#Registro

a = open("registrados.txt","a")#Abrindo pasta no modo de adcionar novos dados
print("Você selecionou a opção de cadastrar uma nova conta")
nome_usuario = input("Por favor informe o seu nome de usuario: ")
a.write(nome_usuario)
print("Cadastrado com sucesso!")
#login
print("Efetue Login")
nome_login = input("Digite o seu nome de usuario: ")
registrados = a.readlines() # Leu o arquivo e transformou em uma lista chamada registrados
if nome_login in registrados :
    print("Bem vindo, Fulano, ")
else:
    print("Você deve ter digitado seu nome de usuario errado, por favor verifique.")    
  • Search more about the file read mode. You used the mode 'a' to open the file, which is a writing mode; you cannot read the content when the file is opened like this. It would be interesting for you to work in isolation: in the record you open for writing, in the login you open for reading.

1 answer

1


I don’t know if I’ll answer what you want, but I’ll try to answer it as best I can. Here follows its algorithm with some modifications

arq = open('registrados.txt', 'a')
print('Olá, aqui você pode adicionar uma nova conta!')
nome_usuario = input('Digite o nome de usuário: ')

arq.write('{}\n'.format(nome_usuario))
'''
Adição da constante \n new line
Uma vez que write não o adiciona automaticamente
'''

print('Cadastro realizado com sucesso!\n')
arq.close() #O arquivo é fechado do modo de adição para ser aberto
            #posteriormente no modo de leitura

arq = open('registrados.txt') #abrindo no modo de leitura
print('Efetue o seu login')
nome_login = input('Digite o seu nome de usuario: ')

registrados = arq.readlines()
if nome_login + '\n' in registrados:
    print('Bem vindo, {}!'.format(nome_login))
else:
    print('Você deve ter digitado seu nome de usuario errado, por favor verifique.')
arq.close()

Beware of line breaks, because since the readlines method recognizes lines due to the presence of constant n at the end of each line, it should be properly placed in the file lines.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.