ConfigParser.SafeConfigParser mit doppelten Einträgen

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
pythoner
User
Beiträge: 22
Registriert: Dienstag 8. September 2015, 19:58

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()
Danke und Gruß
Pythoner
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

the more they change the more they stay the same
pythoner
User
Beiträge: 22
Registriert: Dienstag 8. September 2015, 19:58

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])
Danke und Gruß
Pythoner
Antworten