Forums Neueste Beiträge
 

Schreiben via ConfigParser

20/10/2010 - 08:25 von Vitus Jensen | Report spam
Hej!

Ich möchte in einer INI-Datei Schlüssel hinzufügen bzw ersetzen (falls sie
schon bestehen), und das ganze unter Python 2.4. Dazu nutze ich das
Modul ConfigParser, was auch prinzipiell funktioniert, allerdings wird
immer der Schlüssel in einer neuen Sektion hinzugefügt und nicht der alte
Wert ersetzt.

Hat das jemand schon mal hinbekommen? Mein Ergebnis sieht folgendermaßen
aus:

=[Node 2:0]
data = " bla blubb "

[Node 2:0]
data = " bla blubb "
=
def addToFile(file, node, route, data):
key = "Node " + repr(node) + ":" + repr(route)
if file.has_section(key) == False:
print "New section"
file.add_section(key)
file.set(key, "data", hexdumps(data))
return

Die Ausgabe erfolgt nur beim ersten Mal, d.h. die Section wird von mir nur
einmal angelegt.

Vitus

Vitus Jensen, Hannover, Germany, Earth, Universe (current)
 

Lesen sie die antworten

#1 deets
20/10/2010 - 11:01 | Warnen spam
Vitus Jensen writes:

Hej!

Ich möchte in einer INI-Datei Schlüssel hinzufügen bzw ersetzen (falls
sie schon bestehen), und das ganze unter Python 2.4. Dazu nutze ich
das Modul ConfigParser, was auch prinzipiell funktioniert, allerdings
wird immer der Schlüssel in einer neuen Sektion hinzugefügt und nicht
der alte Wert ersetzt.

Hat das jemand schon mal hinbekommen? Mein Ergebnis sieht
folgendermaßen aus:

=> [Node 2:0]
data = " bla blubb "

[Node 2:0]
data = " bla blubb "
=>
def addToFile(file, node, route, data):



Du verschattest hier mit dem Namen file das eingebaute "file". Das ist
schlechter stil, selbiges gilt fuer e.g. list, dict und co. Damit machst
du dir das Leben unnoetig schwer, wenn du irgendwann mal in dieser
Funktion einen Datei oeffenen willst.

key = "Node " + repr(node) + ":" + repr(route)
if file.has_section(key) == False:



Sowas schreibt man in Python (und in jeder anderen Sprache) als:

if not <condition>:

print "New section"
file.add_section(key)
file.set(key, "data", hexdumps(data))
return

Die Ausgabe erfolgt nur beim ersten Mal, d.h. die Section wird von mir
nur einmal angelegt.



Kann ich alles nicht nachvollziehen, geht fuer mich:

import os
import sys
from ConfigParser import *

cp = ConfigParser()

cf = sys.argv[1]

if os.path.exists(cf):
os.remove(cf)

cp.add_section("foo")
cp.set("foo", "bar", "baz")

with open(cf, "w") as outf:
cp.write(outf)


cp = ConfigParser()

with open(cf) as inf:
cp.readfp(inf)

assert cp.get("foo", "bar") == "baz"

cp.set("foo", "bar", "padamm")

with open(cf, "w") as outf:
cp.write(outf)


cp = ConfigParser()

with open(cf) as inf:
cp.readfp(inf)

assert cp.get("foo", "bar") == "padamm"


Diez

Ähnliche fragen