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.
ich möchte eigentlich nur mittels des ConfigParser's eine INI-Datei einlesen - allerdings muss gewährleistet sein, dass fehlende Keys bzw. Sections per Default hinterlegt sind.
Mein Code sieht also zB so aus: INI-Datei
[CONF]
LOG_LEVEL=1
Vorschlag: Wert aus dem Config-File abfragen -> wenn der nicht da ist, sollte es eine Exception geben. Auf die kannst du dann mit einem config.set(...) reagieren.
dass mit ner Exception abzufangen wäre zwar ne Möglichkeit, aber da ich zig Keys/Values in dieser INI-Datei stehen habe (Beispiel ist nur ein Auszug), müsste ich das dann für jeden Wert seperat machen.
So wie ich das verstanden habe, kann man nur default Werte übergeben, die in keiner Section stehen, also global gültig sind! Das ist bei Dir ja nicht der Fall. (Was helduel mal nicht gesagt hat )
Außer man kann das dict so erweitern, dass man die Section mit angeben kann, etwa:
In [5]: config = ConfigParser.SafeConfigParser({'ACT_VALUE':'100'})
In [6]: print config
<ConfigParser.SafeConfigParser instance at 0x912810c>
In [7]: print config.defaults()
{'act_value': '100'}
In [8]: print config.sections()
[]
@helduel: Ich habe das mal ausprobiert und mich wirklich gefragt, warum ich das wie oben beschrieben realisiert habe... Dann hab ich das nach deiner Lösung umgesetzt - und du hast recht: Das ist ja viel einfacher und übersichtlicher. Das Problem bei mir war die Config-Datei. Sie hatte folgendes Aussehen:
@DasIch: Mich würde mal interessieren, warum du diese "Lösung" als Verbrechen! bezeichnest. Könntest du diese Aussage mal konkretisieren, denn mit mit diesem Statement alleine kann ich nun aber auch gar nichts anfangen.
Ich bin ja gerne bereit, andere Lösungsvorschläge zu akzeptieren, aber etwas detaillierter würde schon etwas mehr dazu beitragen...
Ich nehme mal an dass du die Funktionen konsequent falsch beannt hast und weil du alle Exceptions schluckst, was schlichtweg schädlich ist, da du so auch Exceptions fängst die du eigentlich gar nicht fangen wolltest.
@Leonidas: Mit den Exceptions gebe ich dir recht. Das alles mit einer einzigen abzufackeln ist nicht wirklich sauber. Aber ich habe das als Beispiel angesehen und in der realen Lösung hätten da nicht nur ein paar mehr sondern auch eindeutigere Exceptions gestanden.
Es ging mir in diesem Augenblick mehr um das Handling mit dem ConfigParser.
Aber was mich dann doch interessieren würde, was du mit konsequenter Falschbenennung von Funktionen meinst? Was mache ich da falsch? Nenn mir doch bitte mal ein Beispiel und wenn möglich dann gleich auch wie es richtig sein müsste...