Você pode fazer isso em uma única linha de código.
No python 3, acrescente um cabeçalho de seção falso aos dados do arquivo de configuração e passe-o para read_string()
.
from configparser import ConfigParser
parser = ConfigParser()
with open("foo.conf") as stream:
parser.read_string("[top]\n" + stream.read())
Você também pode usar itertools.chain()
para simular um cabeçalho de seção para read_file()
. Isso pode ser mais eficiente em termos de memória do que a abordagem acima, o que pode ser útil se você tiver grandes arquivos de configuração em um ambiente de tempo de execução restrito.
from configparser import ConfigParser
from itertools import chain
parser = ConfigParser()
with open("foo.conf") as lines:
lines = chain(("[top]",), lines)
parser.read_file(lines)
No python 2, acrescente um cabeçalho de seção falso aos dados do arquivo de configuração, envolva o resultado em um StringIO
objeto e passe-o para readfp()
.
from ConfigParser import ConfigParser
from StringIO import StringIO
parser = ConfigParser()
with open("foo.conf") as stream:
stream = StringIO("[top]\n" + stream.read())
parser.readfp(stream)
Com qualquer uma dessas abordagens, suas configurações estarão disponíveis em parser.items('top')
.
Você também pode usar StringIO no python 3, talvez para compatibilidade com interpretadores python novos e antigos, mas observe que agora ele está no io
pacote e readfp()
está obsoleto.
Como alternativa, você pode considerar o uso de um analisador TOML em vez do ConfigParser.