nalisador de configuração Python (suporte a chave duplicad
Então, recentemente, comecei a escrever um analisador de configuração para um projeto Python em que estou trabalhando. Inicialmente, evitei o configparser e o configobj, porque queria oferecer suporte a um arquivo de configuração como este:
key=value
key2=anothervalue
food=burger
food=hotdog
food=cake icecream
Em resumo, esse arquivo de configuração será editado via linha de comando sobre SSH frequentemente. Portanto, não quero tabular ou minuciosamente sobre espaçamento (como YAML), mas também quero evitar que chaves com vários valores (10 ou mais facilmente) sejam agrupadas em linhas no vi. É por isso que eu gostaria de oferecer suporte a chaves duplicadas.
No meu mundo ideal, quando solicito comida ao objeto de configuração Python, ele me retorna uma lista com ['burger', 'hotdog', 'cake', 'icecream']. Se não houvesse um valor de comida definido, ele procuraria em um arquivo de configuração padrão e me forneceria esses / esses valore
Eu já implementei o acima
No entanto, meus problemas começaram quando percebi que queria apoiar a preservação de comentários embutidos e coisas do tipo. A maneira como manejo a leitura e gravação nos arquivos de configuração, é decodificar o arquivo em um ditado na memória, ler os valores do dict ou gravar valores no dict e depois despejá-lo novamente em um arquivo. Isso não é muito bom para preservar a ordem das linhas e os comentários, e isso está me incomodando.
A) O ConfigObj parece ter tudo o que preciso, exceto suporte a chaves duplicadas. Em vez disso, ele quer que eu faça uma lista, será muito difícil editar manualmente no vi over ssh devido ao quebra de linha. Posso tornar o configobj mais amigável para ssh / vi?
B) A minha solução caseira está errada? Existe uma maneira melhor de ler / escrever / armazenar meus valores de configuração? Existe alguma maneira fácil de lidar com a alteração de um valor-chave em um arquivo de configuração, apenas modificando essa linha e reescrevendo todo o arquivo de configuração da memóri