ConfigParser - Werte richtig einlesen

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
kevelll
User
Beiträge: 10
Registriert: Donnerstag 9. Juli 2009, 11:04

Hallo liebe python-Gemeinde,

ich benutze ein INI-File und lese die Werte mit dem ConfigParser ein. Mir ist aufgefallen das die Einträge in der INI-Datei ohne ein System eingelesen werden. Ich hätte erwartet, dass der ConfigParser die Werte nach der Reihenfolge einliest. Von unten nach oben bzw. von oben nach unten. Gibt es eine Möglichkeit das die Einträge in der gleichen Reihenfolge eingelesen werden wie sie auch in der INI-Datei stehen? Oder verwende ich den ConfigParser falsch? :K

Hier mein Codeausschnitt:

Code: Alles auswählen

def iniParserMaschines():
    import ConfigParser
    host        = []
    machine   = []
    mode       = []

    config = ConfigParser.ConfigParser()
    config.read("config.ini")
    
    for section in config.sections():
        if not section == "DEFAULTSETTINGS":
            machine.append(section) 
        for option in config.options(section):
            if not section == "DEFAULTSETTINGS":
                if option == "mode":
                    mode.append(config.get(section, option))
                if option == "host":
                    host.append(config.get(section, option))
                
    return host, machine, mode 



Über eine Antwort würde ich mich sehr freuen...Danke schon mal im voraus :!:
BlackJack

@kevelll: Dem OptionParser liegen wohl ganz normale `dict`\s zugrunde und die haben nun einmal "beliebige" Reihenfolge bei den Einträgen. Eventuell wäre ja `ConfigObj` etwas für Dich.
kevelll
User
Beiträge: 10
Registriert: Donnerstag 9. Juli 2009, 11:04

Alles klar...danke BlackJack! Dann werde ich mir mal ConfigObj ansehen!

Danke!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@BlackJack In Python 2.7 nutzt ConfigParser OrderedDicts.
kevelll
User
Beiträge: 10
Registriert: Donnerstag 9. Juli 2009, 11:04

Python-Doc:

Changed in version 2.7: The default dict_type is collections.OrderedDict. allow_no_value was added.



Das heißt ich sollte schnellsten mal update auf 2.7 machen! :wink:
Antworten