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

Donnerstag 15. Dezember 2005, 09:49

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
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 15. Dezember 2005, 10:24

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Donnerstag 15. Dezember 2005, 10:41

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
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 15. Dezember 2005, 10:45

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Donnerstag 15. Dezember 2005, 13:08

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
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 15. Dezember 2005, 13:12

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 15. Dezember 2005, 13:25

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Donnerstag 15. Dezember 2005, 22:38

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