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 criar um sistema de lembretes com alarme em Python

    Criar um sistema de lembretes com alarme em Python é um dos projetos mais gratificantes para quem está dando os

    Ler mais

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

    Como extrair dados de tabelas em sites com Python e Pandas

    Você já se deparou com um site repleto de informações úteis organizadas em tabelas, mas sentiu que copiar e colar

    Ler mais

    Tempo de leitura: 10 minutos
    09/04/2026
    Projetos
    Foto do Leandro Hirt

    Como converter áudio em texto com Python de forma gratuita

    Transformar arquivos de áudio em texto é uma das tarefas mais úteis e requisitadas na era da inteligência artificial e

    Ler mais

    Tempo de leitura: 10 minutos
    08/04/2026
    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