Como criar um sistema de login simples com Python e TXT

Publicado em: 07/04/2026
Tempo de leitura: 10 minutos

Aprender a manipular informações externas é um dos grandes marcos na jornada de qualquer programador. Se você está dando seus primeiros passos na lógica de programação com Python, entender como salvar e validar dados de usuários é essencial. Criar um sistema de login simples com Python e TXT é o projeto perfeito para praticar conceitos de leitura e escrita de arquivos, além de estruturas de controle de fluxo de forma prática e direta.

Embora em aplicações profissionais utilizemos bancos de dados robustos como o MySQL ou PostgreSQL, o uso de arquivos de texto (.txt) oferece uma maneira didática e leve de entender a persistência de dados. Neste guia, vamos construir do zero um sistema capaz de cadastrar novos usuários e validar o acesso de perfis já existentes, salvando tudo em um arquivo comum no seu computador.

Por que utilizar arquivos TXT para um sistema de login?

O uso de arquivos de texto é ideal para pequenos scripts, ferramentas de automação local ou protótipos rápidos. A principal vantagem é a simplicidade: você não precisa instalar servidores de banco de dados complexos ou configurar conexões de rede. Tudo o que você precisa é das funções nativas do Python para lidar com o sistema de arquivos.

Além disso, ao trabalhar com TXT, você reforça conhecimentos sobre como as strings em Python são manipuladas e como o computador interpreta quebras de linha e separadores. É uma base sólida antes de avançar para formatos mais estruturados, como o JSON ou bancos de dados relacionais.

Preparando o Ambiente de Desenvolvimento

Antes de começarmos a digitar o código, certifique-se de que você tem o Python instalado em sua máquina. Para uma melhor experiência de escrita e depuração, recomendamos a instalação e configuração do VS Code, que possui ótimas extensões para Python.

Crie uma pasta exclusiva para este projeto. Dentro dela, vamos trabalhar com dois arquivos principais: um script Python (ex: main.py) e um arquivo de texto onde as credenciais serão armazenadas (ex: usuarios.txt). Não é necessário criar o arquivo TXT manualmente agora; o nosso código pode fazer isso automaticamente caso ele não exista.

Estrutura básica do sistema de login

Nosso sistema será dividido em três funcionalidades principais: um menu interativo, uma função para cadastrar novos usuários e uma função para realizar o login. Para organizar o fluxo, utilizaremos o conceito de funções em Python, o que torna o código mais limpo e fácil de manter.

Passo 1: Criando o Menu de Opções

O primeiro passo é criar uma interface no terminal para que o usuário escolha o que deseja fazer. Vamos usar um laço de repetição para garantir que o programa continue rodando até que o usuário decida sair.

Python
def menu():
    print("\n--- SISTEMA DE ACESSO ---")
    print("1. Cadastrar novo usuário")
    print("2. Fazer Login")
    print("3. Sair")
    opcao = input("Escolha uma opção: ")
    return opcao

Nesta etapa, utilizamos a função input() para capturar a escolha do usuário. É uma forma simples de interação que serve como base para muitos scripts de terminal.

Passo 2: Desenvolvendo a Função de Cadastro

Agora, precisamos de uma forma de salvar o nome de usuário e a senha. Para manter o arquivo organizado, salvaremos cada usuário em uma linha nova, separando o nome da senha por um caractere especial, como uma vírgula ou ponto e vírgula.

Python
def cadastrar():
    usuario = input("Digite o novo nome de usuário: ")
    senha = input("Digite a nova senha: ")
    
    with open("usuarios.txt", "a") as arquivo:
        arquivo.write(f"{usuario},{senha}\n")
    print("Usuário cadastrado com sucesso!")

Aqui, usamos o gerenciador de contexto with open(). Essa é a maneira recomendada de abrir arquivos no Python, pois ela garante que o arquivo seja fechado corretamente, mesmo que ocorra um erro durante a escrita. O modo “a” (append) adiciona o conteúdo ao final do arquivo sem apagar o que já existe.

Passo 3: Lógica de Verificação de Login

A parte mais importante é a validação. Precisamos ler o arquivo usuarios.txt, percorrer cada linha e verificar se o par usuário/senha digitado corresponde a algum registro salvo.

Python
def login():
    usuario_input = input("Usuário: ")
    senha_input = input("Senha: ")
    sucesso = False

    try:
        with open("usuarios.txt", "r") as arquivo:
            for linha in arquivo:
                usuario_salvo, senha_salva = linha.strip().split(",")
                if usuario_input == usuario_salvo and senha_input == senha_salva:
                    sucesso = True
                    break
    except FileNotFoundError:
        print("Erro: Nenhum usuário cadastrado ainda.")
        return

    if sucesso:
        print("Login realizado com sucesso! Bem-vindo.")
    else:
        print("Usuário ou senha incorretos.")

Nesta função, utilizamos o método strip() para remover espaços e quebras de linha e o split(",") para separar o nome da senha. Também aplicamos um bloco try-except em Python para evitar que o programa trave caso o arquivo de texto ainda não tenha sido criado.

Melhorando a segurança com Hash de Senhas

Salvar senhas em texto puro, como estamos fazendo agora, é uma prática insegura. Se alguém tiver acesso ao seu arquivo TXT, verá todas as senhas. Em projetos reais, aplicamos técnicas de criptografia conhecidas como “hashing”.

Python oferece bibliotecas nativas como a hashlib para transformar uma senha em uma cadeia de caracteres irreconhecível. Embora este tutorial foque no básico, é altamente recomendável estudar sobre hash de senhas em Python para evoluir a segurança dos seus sistemas conforme você ganha experiência.

Lidando com erros comuns no sistema de login

Ao lidar com arquivos e entradas de usuário, diversos erros podem surgir. Um dos mais comuns é o usuário tentar fazer login antes de qualquer cadastro existir, o que gera o erro de arquivo não encontrado. Outro problema frequente é a inserção de vírgulas no campo de usuário, o que quebraria nossa lógica de split(",").

Para um sistema mais robusto, você poderia adicionar validações para impedir caracteres especiais ou garantir que os campos não fiquem vazios. O uso de estruturas if, elif e else ajuda a criar essas camadas de proteção, garantindo que o fluxo do programa seja previsível e seguro.

Organizando o fluxo principal

Para que tudo funcione, precisamos de um laço principal que chame as funções criadas de acordo com a escolha do usuário. Isso é o que chamamos de “ponto de entrada” do script.

Python
def executar():
    while True:
        escolha = menu()
        if escolha == "1":
            cadastrar()
        elif escolha == "2":
            login()
        elif escolha == "3":
            print("Saindo do sistema...")
            break
        else:
            print("Opção inválida!")

Utilizar um while True permite que o sistema de login simples com Python e TXT continue operando até que o usuário explicitamente escolha a opção de sair, oferecendo uma experiência de uso contínua.

Código Completo do Projeto

Abaixo, apresentamos o código unificado. Você pode copiar este bloco, salvar em um arquivo chamado sistema_login.py e executá-lo imediatamente em seu terminal.

Python
# Sistema de Login Simples com Python e TXT

def menu():
    """Exibe o menu principal e retorna a opção escolhida."""
    print("\n" + "="*20)
    print("   SISTEMA DE ACESSO")
    print("="*20)
    print("1. Cadastrar novo usuário")
    print("2. Fazer Login")
    print("3. Sair")
    return input("Escolha uma opção: ")

def cadastrar():
    """Registra um novo usuário no arquivo usuarios.txt."""
    usuario = input("Digite o novo nome de usuário: ").strip()
    senha = input("Digite a nova senha: ").strip()

    if not usuario or not senha:
        print("Erro: Usuário e senha não podem estar vazios.")
        return

    # O modo 'a' adiciona ao final do arquivo sem sobrescrever
    with open("usuarios.txt", "a") as arquivo:
        arquivo.write(f"{usuario},{senha}\n")
    
    print(f"Usuário '{usuario}' cadastrado com sucesso!")

def login():
    """Valida as credenciais comparando com o arquivo usuarios.txt."""
    usuario_input = input("Usuário: ").strip()
    senha_input = input("Senha: ").strip()
    
    encontrado = False

    try:
        with open("usuarios.txt", "r") as arquivo:
            for linha in arquivo:
                # Divide a linha pela vírgula e remove espaços/quebras de linha
                partes = linha.strip().split(",")
                if len(partes) == 2:
                    usuario_salvo, senha_salva = partes
                    if usuario_input == usuario_salvo and senha_input == senha_salva:
                        encontrado = True
                        break
    except FileNotFoundError:
        print("Aviso: Nenhum banco de dados de usuários encontrado. Cadastre um usuário primeiro.")
        return

    if encontrado:
        print(f"Sucesso: Bem-vindo ao sistema, {usuario_input}!")
    else:
        print("Erro: Usuário ou senha incorretos.")

def iniciar():
    """Controla o fluxo principal do programa."""
    while True:
        opcao = menu()
        
        if opcao == "1":
            cadastrar()
        elif opcao == "2":
            login()
        elif opcao == "3":
            print("Encerrando o programa. Até logo!")
            break
        else:
            print("Opção inválida. Tente novamente.")

if __name__ == "__main__":
    iniciar()

Dicas para expandir seu projeto

Depois de dominar este sistema básico, você pode começar a adicionar funcionalidades mais avançadas. Uma excelente ideia é criar um gerador de senhas no Python integrado ao cadastro, para sugerir combinações fortes ao usuário.

Outra evolução natural é a criação de uma interface visual. Em vez de ler e escrever apenas no terminal, você pode usar bibliotecas como o Tkinter para criar interfaces gráficas com Python, tornando seu sistema de login muito mais profissional e amigável para usuários comuns.

Para saber mais sobre o gerenciamento de diretórios e arquivos de forma mais moderna, vale a pena consultar a documentação oficial da biblioteca pathlib do Python ou as especificações sobre conceitos de criptografia na Wikipédia para entender como proteger dados sensíveis em aplicações reais.

Perguntas Frequentes

O arquivo TXT é seguro para guardar senhas?

Não. Arquivos TXT podem ser lidos por qualquer pessoa com acesso ao computador. Para projetos reais, utilize bancos de dados e hashing de senhas.

O que acontece se eu apagar o arquivo usuarios.txt?

O sistema perderá todos os cadastros. Ao tentar fazer login, o Python exibirá a mensagem de erro tratada no bloco try-except.

Como posso permitir que o usuário use vírgulas na senha?

Neste sistema simples, o uso da vírgula confunde o comando split. Para resolver, você pode usar um separador mais raro (como | ou 😉 ou migrar para arquivos JSON.

Posso usar esse sistema em uma página web?

Para web, o ideal é usar frameworks como Flask ou Django, que já possuem sistemas de autenticação integrados e muito mais seguros.

Como faço para a senha não aparecer no terminal enquanto digito?

Você pode importar o módulo nativo getpass e usar getpass.getpass() no lugar do input() para senhas.

Python cria o arquivo automaticamente?

Sim, o modo “a” (append) do comando open() cria o arquivo automaticamente caso ele não exista no diretório atual.

Posso cadastrar dois usuários com o mesmo nome?

Nesta versão simplificada, sim. Para evitar isso, você deve adicionar uma lógica que verifica se o nome já existe no TXT antes de salvar o novo cadastro.

Este código funciona em celulares?

Sim, você pode rodar este script em aplicativos que executam Python no Android ou iOS, como o Pydroid 3 ou o Pythonista.

Agora que você entendeu como funciona a base de um sistema de login, o próximo passo é praticar. Tente modificar o código para incluir um campo de “e-mail” ou uma função de “remover usuário”. A programação é uma habilidade prática, e cada pequena modificação ajudará você a fixar o conteúdo e se tornar um desenvolvedor mais completo.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Projetos
    Foto do Leandro Hirt

    Como gerar calendário mensal em Python em 2 minutos

    Você sabia que criar um calendário completo e formatado pode ser feito em pouquíssimas linhas de código? Muitas vezes, ao

    Ler mais

    Tempo de leitura: 9 minutos
    03/04/2026
    Projetos
    Foto do Leandro Hirt

    Como criar um conversor de moedas em Python passo a passo

    Criar um conversor de moedas em Python é um dos projetos mais gratificantes para quem está começando no mundo da

    Ler mais

    Tempo de leitura: 9 minutos
    31/03/2026
    Projetos
    Foto do Leandro Hirt

    Como criar um gerenciador de senhas simples com Python

    A segurança digital tornou-se uma prioridade no cotidiano de qualquer pessoa que navega na internet. Com dezenas de contas e

    Ler mais

    Tempo de leitura: 12 minutos
    01/03/2026
    Projetos
    Foto do Leandro Hirt

    Como gerar QR Code com Python em poucos minutos

    Gerar um código de resposta rápida, o famoso QR Code, tornou-se uma habilidade essencial para desenvolvedores que buscam facilitar a

    Ler mais

    Tempo de leitura: 12 minutos
    26/02/2026
    Projetos
    Foto do Leandro Hirt

    Como fazer seu primeiro jogo de Pong com Python

    Aprender como fazer seu primeiro jogo de Pong com Python é um dos marcos mais emocionantes para qualquer iniciante na

    Ler mais

    Tempo de leitura: 11 minutos
    24/02/2026
    Ilustração de uma cobra com o logo do Python centralizado
    Projetos
    Foto do Leandro Hirt

    Criando o jogo da cobrinha (Snake) em Python

    Desenvolver o seu próprio jogo da cobrinha (Snake) em Python é um dos marcos mais importantes na jornada de qualquer

    Ler mais

    Tempo de leitura: 11 minutos
    10/02/2026