sábado, 28 de janeiro de 2023

Como ler arquivos de configuração no python.

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