Neste texto irei demonstrar como se faz a leitura de arquivos de configuração(arquivos INI) no python.
É muito comum nos depararmos com arquivos de configuração, eles facilitam o gerenciamento de rollouts. São arquivos do tipo 'chave x valor' separados em sessões, que servem em muitas vezes para a configuração de aplicativos.
No exemplo abaixo temos o arquivo de configuração com a extenção python.conf.
[client]
port = 8080
pass = clientpass
key = true
[admin]
port = 8090
pass = adminpass
key = false
[system]
defaut = 0
security = 1
Para fazermos a leitura deste documento temos o módulo configparser.
Abaixo um exemplo de como ler a variavel porta, da seção(cabeçalho) "client":
import configparser
# Cria um objeto de configuração
config = configparser.ConfigParser()
# Lê o arquivo my.cnf
config.read('python.conf')
# Extrai o valor da porta do cabeçalho client
port = config.get('client', 'port')
print(port)
O resultado é 8080, caso queira extrair do cabeçalho admin basta substituir client por admin e tera a porta 8090.
Abaixo uma opção para validarmos todas as sessões lidas no arquivo de configuração, bem como validarmos se uma sessão existe dentro do arquivo de configuração.
import configparser
# Cria um objeto de configuração
config = configparser.ConfigParser()
# Lê o arquivo my.cnf
config.read('python.conf')
#Ler todas as sessões(cabeçalhos) do arquivo.
debug_sectopn = config.sections()
print(debug_sectopn)
#Validar se uma sessão existe dentro do arquivo.
debug_validar = 'client' in config
print(debug_validar)
O resultado esperado são todos os cabeçalhos da seção bem como um valor boleano(true) para a sessão client.
Também é possivel utilizar array, formatando o arquivo ini.
Segue abaixo a seção [system], do arquivo python.conf.:
[system]
defaut = false
security = true
array = [1,2,3]
Para chamar a seção system.array, iremos utilizar o método get do configparser.
import configparser
import json
# Cria um objeto de configuração
config = configparser.ConfigParser()
# Lê o arquivo my.cnf
config.read('conf/python.conf')
#debug
valor = config.get('system','array')
valor = json.loads(valor)
print(valor)
print(type(valor))
output:
user@workstation poc-python %python ex3.py
[1, 2, 3]
<class 'list'>
user@workstation poc-python %
Referencias: [1] Documentação do módulo.
Inventário: Testes feitos no python 3.0.8.
Nenhum comentário:
Postar um comentário