Os arquivos de configuração, com extensão .ini, são muito usados em software para guardar diversos dados do usuário e do sistema. Exemplos de dados que são guardados nestes arquivos são tamanho de tela, ultimas configurações do usuário, nome/ip de banco de dados para conexão, entre vários outros.
Conhecendo o arquivo .ini
A estrutura básica de um arquivo .ini segue:
[seção1]
chave1=valor1
chave2=valor2
chave3=valor3
chave4=valor4
[seção2]
chave1=valor1
chave2=valor2
chave3=valor3
chave4=valor4
A estrutura do arquivo em si é básica e sua construção é feita em pares de chave/valor e sua seção, que é o domínio a que estes pares pertencem. Como foi possível constatar, a estrutura é simples e pode ser facilmente manipulada por um programador. Felizmente existem alternativas que já fazem este trabalho, agilizando muito a integração com este formato.
Na versão 2.6 do Python foi introduzida a API (Application Programming Interface) ConfigParser, que é responsável por manipular estes arquivos. Seu uso é bem simples e não apresenta nenhuma dificuldade inicial. A seguir segue um pedaço de código e um arquivo ini que é manipulado por este programa.
Arquivo config.ini:
[dados]
nome=marcos
email=marcos@sempreupdate.com
[configuracao]
largura_tela=800
altura_tela=600
Arquivo manipula_ini.py:
import ConfigParser
config = ConfigParser.ConfigParser()
config.read(“config.ini”)
print config.sections()
try:
print ‘nome == ‘ + config.get(‘dados’, ‘nome’)
except:
print ‘Chave nome nao encontrada’
config.set(‘dados’, ‘nome’, ‘paulo’)
try:
print ‘nome == ‘ + config.get(‘dados’, ‘nome’)
except:
print ‘Chave nome nao encontrada’
config.remove_section(‘configuracao’)
f = open(‘new_config.ini’, ‘w’)
config.write(f)
f.close()
O código acima aborda algumas características do módulo ConfigParser:
- read: Lê um arquivo .ini e inicializa objeto config.
- config.sections: Retorna uma lista com todas as seções do arquivo ini
- config.get: Busca o valor de uma chave(passada por parâmetro) dentro de uma seção (também passada por parâmetro)
- config.write: Cria um novo arquivo de configuração com o objeto config.
- config.set: altera o valor de uma chave, dentro de uma seção
- config.remove_section: Remove a seção passada como parâmetro
Estes dois últimos métodos somente alteram/removem dados do objeto em memória, e não do arquivo lido. Para alterar o arquivo, é necessário executar o método write e criar um arquivo, ou sobrescrever o arquivo prévio com o config alterado em memória.
Bom pessoal, este foi apenas um introdução a API. Para maiores informações basta acessar a documentação do Python oficial.