O arquivo de configuração atual é o seguinte:
mainwindow.title = 'test'
mainwindow.position.x = 100
mainwindow.position.y = 200
mainwindow.button.label = 'apply'
mainwindow.button.size.x = 100
mainwindow.button.size.y = 30
logger.datarate = 100
logger.enable = True
logger.filename = './test.log'
Isso é lido com python em um dicionário aninhado:
{
'mainwindow':{
'button':{
'label': {'value':'apply'},
...
},
'logger':{
datarate: {'value': 100},
enable: {'value': True},
filename: {'value': './test.log'}
},
...
}
Existe um jeito melhor de fazer isso? A idéia é obter o tipo de comportamento XML e evitar o XML o maior tempo possível. O usuário final é assumido quase totalmente como analfabeto do computador e basicamente usa o bloco de notas e copiar e colar. Portanto, o tipo "cabeçalho + variáveis" padrão do python é considerado muito difícil.
O usuário fictício edita o arquivo de configuração, programadores capazes manipulam os dicionários. O dicionário aninhado é escolhido para facilitar a divisão (o logger não precisa ou nem pode ter / editar parâmetros da janela principal).
Do what I want.
É o mais difícil para os computadores, embora: Pmainwindow.title =='test"
Respostas:
Você pode usar algo como YAML . Aqui está um link para um exemplo:
http://www.yaml.org/start.html
Você pode encontrar ligações Python para isso em PyYAML . É um pouco mais amigável que o JSON (que é como é o seu segundo exemplo).
fonte
>
depoiscomments:
, eo&
e*
em frenteid001
A melhor coisa que você pode fazer é fornecer uma maquete da sua solução, e talvez uma maquete de algumas outras soluções, e perguntar a dois ou três usuários representativos do seu sistema. Eles serão muito melhores em dizer o que gostam do que as pessoas selecionadas automaticamente que responderem a perguntas neste site.
Dito isto, para usuários "basicamente analfabetos do computador", acho que o formato que você mostra na sua pergunta é provavelmente o melhor formato de texto sem formatação. Se eles realmente são analfabetos no computador, convém considerar uma GUI simples para que eles não precisem editar manualmente os arquivos de configuração.
fonte
Perca tudo o que você pode perder.
name.name.name=value
, cada um em uma linha separada, é o mais simples possível. Você não precisa das aspas para analisar, você sabe quandotrue
é um booleano e quandotrue
é uma string, não faça o "humano burro" dizer isso. Para strings, se o campo não tiver espaços em branco à esquerda / à direita, retire-os você mesmo.fonte
Imagine uma pessoa chinesa que não sabe inglês e está tentando ler seu arquivo de configuração. Como alternativa, imagine que o arquivo de configuração esteja em árabe (e que você não saiba árabe). Agora pergunte a si mesmo: isso é realmente legível por humanos?
Mesmo que o leitor saiba inglês, ainda não tem idéia se "logger.datarate = 100" significa 100 caracteres por segundo, 100 GiB por hora ou 100 galinhas por tonelada métrica.
O formato de arquivo legível mais humano é um arquivo binário com uma caixa de diálogo / assistente / configurador baseado em GUI decente (com internacionalização, sistema de ajuda, etc.).
fonte
Estou com Patrick Hughes. Crie um aplicativo simples para editar configurações. O arquivo de configuração em si pode ser um pouco mais complexo e pode conter atributos para o editor usar (nome para exibição, texto de ajuda, tipo de valor, valor mínimo / máximo, etc.).
fonte
Eu digo que o que você tem (arquivo de propriedades) já é o melhor formato de configuração legível por humanos. :)
Aqui estão os meus argumentos:
Esse último ponto é realmente muito importante. Como os projetos hoje em dia são todos divididos em ramificações, o arquivo de configuração pode causar muita dor ao mesclar ramificações. O formato de arquivo simples, como o arquivo de propriedades, é mais fácil de mesclar do que o arquivo de estrutura em árvore.
fonte