Die aktuelle Konfigurationsdatei lautet wie folgt:
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'
Dies wird mit Python in ein verschachteltes Wörterbuch eingelesen:
{
'mainwindow':{
'button':{
'label': {'value':'apply'},
...
},
'logger':{
datarate: {'value': 100},
enable: {'value': True},
filename: {'value': './test.log'}
},
...
}
Gibt es einen besseren Weg, dies zu tun? Die Idee ist, XML-Verhalten zu erhalten und XML so lange wie möglich zu vermeiden. Der Endbenutzer wird fast ausschließlich als Computer-Analphabet angenommen und verwendet im Wesentlichen Notizblock und Copy-Paste. Daher wird der Python-Standardtyp "Header + Variablen" als zu schwierig angesehen.
Der Dummy-Benutzer bearbeitet die Konfigurationsdatei. Programmierer können die Wörterbücher bearbeiten. Das verschachtelte Wörterbuch wurde für eine einfache Aufteilung ausgewählt (der Logger benötigt keine Hauptfensterparameter oder kann diese nicht bearbeiten).
Do what I want.
Sie ist jedoch die schwierigste für Computer: Pmainwindow.title =='test"
Antworten:
Sie könnten so etwas wie YAML verwenden . Hier ist ein Link zu einem Beispiel:
http://www.yaml.org/start.html
Python-Bindungen dafür finden Sie bei PyYAML . Es ist etwas benutzerfreundlicher als JSON (so sieht Ihr zweites Beispiel aus).
quelle
>
comments:
&
*
id001
Das Beste, was Sie tun können, ist, ein Modell Ihrer Lösung und möglicherweise ein Modell einiger anderer Lösungen bereitzustellen und zwei oder drei repräsentative Benutzer Ihres Systems zu befragen. Sie können Ihnen viel besser sagen, was sie mögen, als die selbst ausgewählten Personen, die auf dieser Website Fragen beantworten.
Abgesehen davon halte ich das Format, das Sie in Ihrer Frage anzeigen, für das wahrscheinlich beste Nur-Text-Format. Wenn sie wirklich Computer-Analphabeten sind, sollten Sie eine einfache Benutzeroberfläche in Betracht ziehen, damit sie die Konfigurationsdateien nicht manuell bearbeiten müssen.
quelle
Verliere alles, was du verlieren kannst.
name.name.name=value
Jedes in einer separaten Zeile ist so einfach wie möglich. Sie brauchen die Anführungszeichen nicht zum Parsen, Sie wissen, wanntrue
ein Boolescher Wert und wanntrue
ein String ist, lassen Sie sich das nicht vom "dummen Menschen" sagen. Wenn das Feld für Zeichenfolgen keine führenden / nachfolgenden Leerzeichen enthalten soll, entfernen Sie sie selbst.quelle
Stellen Sie sich eine chinesische Person vor, die kein Englisch kann und versucht, Ihre Konfigurationsdatei zu lesen. Stellen Sie sich alternativ vor, die Konfigurationsdatei ist in Arabisch (und Sie kennen kein Arabisch). Nun fragen Sie sich, ist das wirklich menschlich lesbar?
Selbst wenn der Leser Englisch kann, hat er keine Ahnung, ob "logger.datarate = 100" 100 Zeichen pro Sekunde oder 100 GiB pro Stunde oder 100 Hühner pro Tonne bedeutet.
Das am besten lesbare Dateiformat ist eine Binärdatei mit einem anständigen GUI-basierten Dialogfeld / Assistenten / Konfigurator (mit Internationalisierung, Hilfesystem usw.).
quelle
Ich bin bei Patrick Hughes. Erstellen Sie eine einfache App zum Bearbeiten von Konfigurationen. Die Konfigurationsdatei selbst könnte etwas komplexer sein und Attribute enthalten, die der Editor verwenden kann (Anzeigename, Hilfetext, Wertetyp, Min / Max-Wert usw.).
quelle
Ich sage, was Sie haben (Eigenschaftendatei), ist bereits das beste von Menschen lesbare Konfigurationsformat. :)
Hier sind meine Argumente:
Dieser letzte Punkt ist eigentlich ziemlich wichtig. Da Projekte heutzutage alle in Zweige unterteilt sind, kann die Konfigurationsdatei beim Zusammenführen von Zweigen erhebliche Schmerzen verursachen. Flache Dateiformate wie Eigenschaftendateien lassen sich einfacher zusammenführen als Baumstrukturdateien.
quelle