====== Konzept Konfiguration ====== Anwendungsprogramme, besonders wenn sie eine gewisse Größe erreichen, benötigen oftmals eine Konfiguration. Manche Konfiguration ist von globaler Bedeutung und manche Konfiguration nur von lokale Bedeutung (z.B. innerhalb eines Plug-Ins). Dabei stellen sich oft die Frage, wie geht man mit den Konfigurationsdaten um? * Schreibt/Liest man diese "am Stück" zum Programm-Start oder -Ende?\\ Das bedeutet, das Haupt-Programm Schreibt/Liest Konfigurationsdaten von sich selbst und seinen Plug-Ins. => Welche Daten geben die Plug-Ins in Auftrag? * Schreibt jede kleine Einheit ihre eigenen Daten? * Wo und in welcher Weise werden Konfigurationsdaten geschrieben/gelesen und Programmintern zur Verfügung gestellt? * Wie steht es um Konfigurationsdaten, für die Voreinstellungen hinterlegt werden müssen, wenn eine solche Konfiguration noch gar nicht existiert? ===== Das Wie und Wo ===== Denkbar wäre, dass ... * Daten in einem Python-Modul stehen, welches zu Programmbeginn gelesen wird. Schreiben von Änderungen ist schwerlich möglich. * Schreiben und Lesen einer INI-Datei ist prinzipiell möglich. Jedoch muss man genau wissen welche Werte zu schreiben/lesen sind. Eine schwierige Situation, wenn ein Haupt-Programm die Daten seiner Plug-Ins schreiben/lesen muss. * Aufbau einer Datenstruktur, in die sich auch Plug-Ins "einklinken" können. Die Gesamtstruktur wird in einer JSON-Datei ([[https://docs.python.org/3/library/json.html|JSON]]) gespeichert bzw. von ihr gelesen. Die geschriebene Datei wäre vom Benutzer lesbar und könnte auch verändert werden. * Aufbau einer Datenstruktur, in die sich auch Plug-Ins "einklinken" können. Die Gesamtstruktur wird in einer YAML-Datei ([[|YAML]]) gespeichert bzw. von ihr gelesen. Die geschriebene Datei wäre vom Benutzer lesbar und könnte auch verändert werden. * Aufbau einer Datenstruktur, in die sich auch Plug-Ins "einklinken" können. Die Gesamtstruktur wird in einer pickle-Datei gespeichert bzw. von ihr gelesen. Die geschriebene Datei wäre vom Benutzer nicht mehr lesbar, da sie binär ist. * Schreiben und Lesen der Konfigurationsdaten aus einer Datenbank. {{tag>Python Konzept}}