configparser - alle Keys in Variablen übernehmen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
salsero77
User
Beiträge: 4
Registriert: Donnerstag 15. Juni 2023, 15:32

Hallo zusammen

Ich habe ein INI-File mit mehreren Sections und Keys.

In der Section [GENERAL] habe ich mehrere Keys, die ich alle in mein Python Programm einlesen möchte.

Ich möchte also alle Keys, die in der Section GENERAL vorhanden sind, in Variablen einlesen, wobei der Key-Name dem Variablen-Namen entspricht.

Habe leider mit Google noch nicht herausgefunden, wie das geht.

Kann mir da jemand weiterhelfen?

INI-File:

[GENERAL]
VARIABLE1 = "Hallo"
VARIABLE2 = "Welt"

[SECTION2]
VARIABLE3 = "Diese Variable soll nicht eingelesen werden, da nicht in globaler Section"

In Python habe ich schon folgendes drin:

import configparser
config = configparser.ConfigParser()
INI_FILE = 'test.ini'
config.read( INI_FILE )

Hab mal an config.read_dict gedacht, habe das aber nicht zum Laufen gekriegt.


Besten Dank für eure Unterstützung.

Gruss Rolf
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Laut dem alten Motto "Explicit is better than implicit" wuerde ich das erstmal einfach nur simpel zuweisen, also

Code: Alles auswählen

einstellung_x = config["GENERAL"]["einstellung_x"]
Die Syntax zum Zugriff auf den config-parser habe ich gerade etwas geraten, aber das Prinzip wird hoffentlich klar.
salsero77
User
Beiträge: 4
Registriert: Donnerstag 15. Juni 2023, 15:32

Hallo deets

Besten Dank!

Ja, so kann ich einen einzelnen Key auslesen.

Das Programm wird eben ziemlich umfangreich und die Section GENERAL hat ca. 200 Keys.
Daher dachte ich, es gäbe vielleicht einen Weg, wie ich gleich alle Keys einer Section einlesen könnte, damit ich nicht 200 Variablen "von Hand" in den Code schreiben muss.
Ich könnte das ja auch in eine for-Schleife packen, nur habe ich bisher leider nicht herausfinden können, wie ich mir die Keys einer Section anzeigen lassen kann.

for name in config.keys():
print(name)

Das bringt mir eine Liste der Sections, aber nicht der darunterliegenden Keys.

Gruss Rolf
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du 200 Variablen hast, dann musst du 200 Variablen hinschreiben. Spaetestens an der Stelle, an der du die benutzen willst. Oder du arbeitest eben mit einem Woerterbuch. Aber die automatisch in Variablen zu ueberfuehren ist nicht der richtige Weg. Ich wuerde auch gerne verstehen, warum du 200 Einstellungen hast. Das klingt etwas sehr viel, und sollte ggf. anders geloest werden.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Das geht ganz analog:

Code: Alles auswählen

for name in config['GENERAL']:
    print(name)
Und man könnte mit dem Section-Objekt weiterarbeiten, oder einfach in ein Wörterbuch unwandeln: `dict(config['GENERAL'])`.
Das mit den Variablen vergisst Du einfach gleich wieder.
salsero77
User
Beiträge: 4
Registriert: Donnerstag 15. Juni 2023, 15:32

Hallo Sirius3

Schon merkwürdig, kaum macht man's richtig, dann geht's ;-)

Besten Dank für deine Unterstützung!

Das mit dem Dictionary ist eine gute Idee.

Gruss Rolf
Antworten