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
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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Schau dir mal bei http://jensdiemer.de/Programmieren/Pyth ... ets/md5sum die Methoden write_md5file() und read_md5file() an...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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()

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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.
Antworten