Seite 1 von 1

ConfigParser

Verfasst: Donnerstag 15. Dezember 2005, 09:49
von Boostpy
guten Morgen zusammen!

Ich brauche Hilfe zum Anwendung von ConfigParser.

Bisher habe ich nur so verwendet, dass ich die Ini Datei auslese. Nun wollte ich ausschreiben. Problem bei mir ist, es gab keine Fehlermeldung beim Setzen durch parserObj.set(section, option, value), aber nachdem ich die gesetzten Werte wiederauslesen möchte , gibt es Fehlermeldung!

Welche Voraussetzung ist, den gesetzten Wert wirklich ausschreiben? Muss ich write(fileobject) verwenden und was bedeutet hier fileobjejct?

Danke für Tips!

Boostpy

Verfasst: Donnerstag 15. Dezember 2005, 10:24
von jens
Schau dir mal bei http://jensdiemer.de/Programmieren/Pyth ... ets/md5sum die Methoden write_md5file() und read_md5file() an...

Verfasst: Donnerstag 15. Dezember 2005, 10:41
von Gast
Hi jens,

Danke dir. Ich habe inzwischen auch eine Lösung herausgefunden, aber es sollte nicht so blöd sein! Meine Lösung:

1. eine Datei öffnen, schreiben (mit ConfigParser write) und schließen.
2. MUSS eine neue Instanz von ConfigParser erzeugen, sonst bei mir geht nicht (wahrscheinlich irgendwie eine Dirty-Markierung gesetzt ????)
3. gesetzten Werte wieder auslesen!

Bessere Idee?

Boostpy

Verfasst: Donnerstag 15. Dezember 2005, 10:45
von jens
Also irgendwie verstehe ich dein Problem nicht:

Code: Alles auswählen

import ConfigParser

config = ConfigParser.ConfigParser()
config.add_section("md5sum")

config.set("md5sum", "filename", "BlaBlaBla...")
config.set("md5sum", "md5sum", "BlaBla")

print config.get("md5sum", "filename")
print config.get("md5sum", "md5sum")

config.set("md5sum", "filename", "Was anderes...")
config.set("md5sum", "md5sum", "und noch was anderes...")

print config.get("md5sum", "filename")
print config.get("md5sum", "md5sum")
Ausgabe:

Code: Alles auswählen

BlaBlaBla...
BlaBla
Was anderes...
und noch was anderes...

Verfasst: Donnerstag 15. Dezember 2005, 13:08
von Gast
hi jens,

ich habe den Code deiner Links genau angeschaut. Ich wollte nicht jedesmal die Ini Datei öffnen und wieder zumachen, um einen Eintrag auszulesen oder speichern. Das ist genau mein Problem. In deinem Code hast du genau den Trick benutzt, z.B. read_md5file immer eine Datei erneut geöffnet! MUSS so sein?

kann das sein?
readparserobj.get(..) # Instanz 1
writeparserobj.set(...)
readparserobj.get(..) #muss Instanz2 verwendet werden,sonst geht es nicht!

Danke für den Tip!

Boostpy

Verfasst: Donnerstag 15. Dezember 2005, 13:12
von jens
Ich sehe immer noch nicht dein Problem... In meinem md5sum-Programm, wird halt nur einmal für eine Datei eine md5-ini-Datei erstellt, wenn sie noch nicht existiert... Wenn es eine gibt, wird diese einmal gelesen und verglichen...

Irgendwoher müßen ja die ini-Daten kommen... Wenn du sie einmal hast, ob geladen aus einer Datei, oder eingetragen per .set(), kannst du die Daten verändern und immer drauf zugreifen...

Was meinst du mit Instanzen???

Es gibt kein readparserobj und writeparserobj... Es ist immer das selbe, d.h. eine Instanz von ConfigParser reicht, um davon zu lesen oder Werte zu schreiben...

Schau dir doch mal mein Beispiel in meinem vorherigen Beitrag an...

Verfasst: Donnerstag 15. Dezember 2005, 13:25
von jens
Hier noch ein Beispeil... Führe es mehrmals hintereinander aus:

Code: Alles auswählen

import ConfigParser

try:
    f = file("test.txt", "r")
    config = ConfigParser.ConfigParser()
    config.readfp(f)
    f.close()
    print "- Aus Datei gelesen"
except:
    print "- ini-Datei existiert nicht, oder andere Fehler"
    print "- Erstelle neue Datei."
    config = ConfigParser.ConfigParser()
    config.add_section("md5sum")

    config.set("md5sum", "filename", "wert1 A")
    config.set("md5sum", "md5sum", "wetr2 A")

    f = file("test.txt", "wU")
    config.write(f)
    f.close()

print "- Aktuelle config-Daten:"
data1 = config.get("md5sum", "filename")
data2 = config.get("md5sum", "md5sum")
print data1
print data2

print "- Verändere Daten:"
if data1 == "wert1 A":
    config.set("md5sum", "filename", "wert1 B")
    config.set("md5sum", "md5sum", "wetr2 B")
else:
    config.set("md5sum", "filename", "wert1 A")
    config.set("md5sum", "md5sum", "wetr2 A")

print config.get("md5sum", "filename")
print config.get("md5sum", "md5sum")

print "- Schreibe neue Daten"
f = file("test.txt", "wU")
config.write(f)
f.close()

Verfasst: Donnerstag 15. Dezember 2005, 22:38
von BlackJack
Falls die Beispiele von jens Dir nicht weiterhelfen, dann kannst Du ja mal Beispielcode von Dir posten und sagen was da nicht funktioniert bzw. was Du erwartest.

Ich verstehe Deine Frage/Probleme nämlich auch nicht.