1. Estrutura de Diretórios do Projeto
A organização dos diretórios do projeto Loxido é a seguinte:
loxido/
├── src/
│ ├── iniciar.py
│ ├── configuracao.py
│ └── utils/
│ ├── auxiliar.py
│ └── registrador.py
├── tests/
│ ├── teste_iniciar.py
│ └── teste_configuracao.py
├── LEIAME.md
├── requisitos.txt
└── .gitignore
Descrição dos diretórios:
src/: Contém o código fonte principal.iniciar.py: Ponto de entrada do sistema.configuracao.py: Responsável por carregar e gerenciar as configurações.utils/: Módulo auxiliar.auxiliar.py: Funções utilitárias.registrador.py: Funções para registro de logs.
tests/: Scripts de teste automatizado.teste_iniciar.py: Testes para o móduloiniciar.py.teste_configuracao.py: Testes para o móduloconfiguracao.py.
LEIAME.md: Documentação do projeto.requisitos.txt: Dependências do projeto..gitignore: Arquivo de exclusão para Git.
2. Arquivo de Inicialização
O arquivo iniciar.py é o ponto de partida da aplicação e realiza a inicialização dos componentes. Segue seu conteúdo:
import configuracao
from utils.registrador import configurar_logger
def executar():
configurar_logger()
try:
cfg = configuracao.carregar_config()
# Inicializações adicionais
print("Aplicação iniciada com sucesso!")
except Exception as e:
print(f"Erro na inicialização: {e}")
if __name__ == "__main__":
executar()
Função das chamadas:
configurar_logger(): Prepara o sistema de logs.configuracao.carregar_config(): Carrega as definições do arquivo de configuração.executar(): Função principal que coordena a inicialização.
3. Arquivo de Configuração
O módulo configuracao.py gerencia as variáveis de ambiente e parâmetros do projeto. Exemplo do código:
import json
import os
def carregar_config(caminho="config.json"):
if not os.path.exists(caminho):
raise FileNotFoundError(f"Arquivo {caminho} não encontrado")
with open(caminho, 'r', encoding='utf-8') as arquivo:
dados = json.load(arquivo)
# Validações ou processamentos adicionais
return dados
Arquivo config.json (exemplo):
{
"banco_dados": {
"host": "localhost",
"porta": 3306,
"usuario": "admin",
"senha": "segredo123"
},
"log": {
"nivel": "DEBUG",
"arquivo": "sistema.log"
}
}
Campos explicados:
banco_dados: Credenciais e endereço do banco.host: Endereço do servidor.porta: Porta de conexão.usuario: Nome do usuário.senha: Senha do banco.
log: Configurações de logging.nivel: Nível de severidade (INFO, DEBUG, etc.).arquivo: Caminho do arquivo de log.