Le fichier de configuration actuel est le suivant:
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'
Ceci est lu avec python dans un dictionnaire imbriqué:
{
'mainwindow':{
'button':{
'label': {'value':'apply'},
...
},
'logger':{
datarate: {'value': 100},
enable: {'value': True},
filename: {'value': './test.log'}
},
...
}
Existe-t-il une meilleure façon de le faire? L'idée est d'obtenir un comportement de type XML et d'éviter le XML le plus longtemps possible. L'utilisateur final est supposé presque totalement analphabète et utilise essentiellement le bloc-notes et le copier-coller. Ainsi, le type standard "en-tête + variables" de python est considéré comme trop difficile.
L'utilisateur factice édite le fichier de configuration, les programmeurs compétents gèrent les dictionnaires. Le dictionnaire imbriqué est choisi pour un fractionnement facile (l'enregistreur n'a pas besoin ou même ne peut pas avoir / modifier les paramètres de la fenêtre principale).
Do what I want.
c'est le plus difficile pour les ordinateurs, cependant: Pmainwindow.title =='test"
Réponses:
Vous pouvez utiliser quelque chose comme YAML . Voici un lien vers un exemple:
http://www.yaml.org/start.html
Vous pouvez trouver des liaisons Python pour cela sur PyYAML . Il est un peu plus convivial que JSON (ce à quoi ressemble votre deuxième exemple).
la source
>
aprèscomments:
, et devant&
et*
devantid001
La meilleure chose que vous puissiez faire est de fournir une maquette de votre solution, et peut-être une maquette de quelques autres solutions, et de demander à deux ou trois utilisateurs représentatifs de votre système. Ils seront bien meilleurs pour vous dire ce qu'ils aiment que les personnes auto-sélectionnées qui répondent aux questions sur ce site.
Cela étant dit, pour les utilisateurs "essentiellement analphabètes", je pense que le format que vous montrez dans votre question est probablement le meilleur format de texte brut. S'ils sont vraiment analphabètes, vous voudrez peut-être envisager une interface graphique simple afin qu'ils n'aient pas à modifier manuellement les fichiers de configuration.
la source
Perdez tout ce que vous pouvez perdre.
name.name.name=value
, chacun sur une ligne distincte, est à peu près aussi simple que possible. Vous n'avez pas besoin des guillemets pour l'analyse, vous savez quandtrue
est un booléen et quandtrue
est une chaîne, ne faites pas que "l'homme stupide" vous le dise. Pour les chaînes, si le champ ne doit pas avoir de blancs de début / fin, supprimez-les vous-même.la source
Imaginez un Chinois qui ne connaît pas l'anglais et qui essaie de lire votre fichier de configuration. Vous pouvez également imaginer que le fichier de configuration est en arabe (et que vous ne connaissez pas l'arabe). Maintenant demandez-vous, est-ce vraiment lisible par l'homme?
Même si le lecteur connaît l'anglais, il ne sait toujours pas si "logger.datarate = 100" signifie 100 caractères par seconde, ou 100 Gio par heure, ou 100 poulets par tonne métrique.
Le format de fichier le plus lisible par l'homme est un fichier binaire avec une boîte de dialogue / assistant / configurateur basé sur une interface graphique décente (avec internationalisation, système d'aide, etc.).
la source
Je suis avec Patrick Hughes. Créez une application simple pour éditer les configurations. Le fichier de configuration lui-même pourrait être un peu plus complexe et pourrait contenir des attributs à utiliser par l'éditeur (nom d'affichage, texte d'aide, type de valeur, valeur min / max, etc.).
la source
Je dis que ce que vous avez (fichier de propriétés) est déjà le meilleur format de configuration lisible par l'homme. :)
Voici mes arguments:
Ce dernier point est en fait assez important. Étant donné que les projets sont tous aujourd'hui divisés en branches, le fichier de configuration peut causer des tonnes de douleur lorsque vous fusionnez des branches. Le format de fichier plat comme le fichier de propriétés est plus facile à fusionner que le fichier de structure arborescente.
la source