Seite 1 von 1

ConfigParser.SafeConfigParser mit doppelten Einträgen

Verfasst: Dienstag 5. Januar 2016, 16:29
von pythoner
Hallo,

ich habe eine Quelldatei die ich mit ConfigParser.SafeConfigParser einlese, Informationen ergänze und in eine neue Dateie schreibe. Derzeit wird nur ein Eintrage von den doppelten übernommen. Ist es möglich die doppelten Einträge zu behalten?

Leider sind in der Quelle aber doppelte Einträge.
Hier ein Beispiel:
[server:sv2657]
maint=0
env=prod
app=Boersenanbindung
function=Boersenanbindung-Traegermaschine
sysgroup=Boersenanbindung Prod
monitoritem=24x7_5#Check_Process_cfexecd_agent#check_remote_procs#:#1:2#cfexecd
monitoritem=24x7_15#Check_remote_cfagent_run#check_remote_cfengine
monitoritem=24x7_15#Check_remote_cfagent_update#check_remote_cfengine_update
duty=
addinfo=Traegermaschien f. MISS Xetra_FFM Xetra_FF2 Xetra_VIE

Code: Alles auswählen

import ConfigParser
...
cp = ConfigParser.SafeConfigParser()
cp.read(idb_file)
...
cp.set ....
...
cp.write(outfile)
outfile.close()

Re: ConfigParser.SafeConfigParser mit doppelten Einträgen

Verfasst: Dienstag 5. Januar 2016, 17:25
von Dav1d

Re: ConfigParser.SafeConfigParser mit doppelten Einträgen

Verfasst: Mittwoch 6. Januar 2016, 11:49
von pythoner
Hallo,

danke für die Links. Mit dem folgenden Code werden aber leider gar keine Daten aus der Quelldatei gelesen. Hat da jemand eine Idee?

Code: Alles auswählen

from collections import OrderedDict
import ConfigParser
...
class MultiOrderedDict(OrderedDict):
    def __setitem__(self, key, value):
        if isinstance(value, list) and key in self:
            self[key].extend(value)
        else:
            super(OrderedDict, self).__setitem__(key, value)

cp = ConfigParser.RawConfigParser(dict_type=MultiOrderedDict)
cp.read([idb_file])
Wenn ich den dict_type weglasse werden alle Daten, bis auf die doppelten Keys gelesen. Also gehe ich davon aus das die Klasse MultiOrderedDict irgendetwas falsch macht.

Code: Alles auswählen

cp = ConfigParser.RawConfigParser()
cp.read([idb_file])