ConfigParser

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
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Der SafeConfigParser ist schon eine tolle Sache. Aus folgender Datei

Code: Alles auswählen

[test]
a = abcd
b = ab%%cd
c = gg%(a)sgg
erhalte ich:

Code: Alles auswählen

a --> 'abcd'
b --> 'ab%cd'
c --> 'ggabcdgg'
Wenn ich das jetzt aber wieder ganz naiv speichere, wird daraus die Datei

Code: Alles auswählen

[test]
a = abcd
b = ab%cd
c = ggabcdgg
was beim erneuten Parsen aber Probleme wegen des %-Zeichens macht. Man sollte doch meinen, das der SafeConfigParser den Kram so speichert, dass er selbst ihn auch wieder lesen kann? Oder habe ich irgendwas uebersehen, das automatisch dafuer sorgt, dass % als %% gepeichert wird? Oder spricht irgendwas gegen ein solches Feature?

Mein Code zum Lesen und Schreiben:

Code: Alles auswählen

from ConfigParser import SafeConfigParser as Parser

def save(data, filename):
    """data: dictionary"""
    parser = Parser()
    parser.add_section("test");
    for entry in data:
        parser.set("test", entry, data[entry])

    parser.write(open(filename, "w"))


def read(filename):
    data = {};
    parser = Parser();
    parser.readfp(open(filename, "r"));

    for entry in parser.options("test"):
        data[entry] = parser.get("test", entry);

    return data;

Der Vollstaendigkeit halber hier nochmal die erste Datei mit dem RawConfigParser gelesen:

Code: Alles auswählen

a --> 'abcd'
b --> 'ab%%cd'
c --> 'gg%(a)sgg'
Ich wusste naemlich bis vor kuzem gar nicht, was die Unterschiede zwischen den verschiedenen Parsern sind... :)
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hallo Rebecca.

Ich hab mich in letzter zeit auch ein wenig mit SCP beschäftigt.
Ich glaube das mit dem Prozentzeichen scheint ein Bug zu sein. Ich habe auch das gleiche Problem.

lg
Antworten