Seite 1 von 1

Listenelement bei Bedarf ändern

Verfasst: Dienstag 23. August 2011, 21:26
von peddy
Hallo,

ein Newbie steht gerade tierisch auf dem Schlauch. Ich möchte ein kleines Script schreiben, welches eine Config-Datei einließt, nach den y-Koordinaten sucht, sie ändert und die ganze Config wieder zurück schreibt. Das habe ich bisher geschrieben:

Code: Alles auswählen

#!/usr/bin/env python

def lesen(dateiname):
    zeilen = []
    fileobj = open(dateiname, 'r')
    for line in fileobj:
        line = line.strip()
        zeilen.append(line)
    fileobj.close()
    return zeilen

def schreiben(dateiname,zeilen):
    fileobj = open(dateiname, 'w')
    for line in zeilen:
        fileobj.write(line + '\n')
    file.close()

zeilen = lesen('map.cfg')
for line in zeilen:
    if line.startswith('y='):
        teile = line.split('=')
        teile[1] = int(teile[1]) - 20
        line = ''.join((teile[0], '=', str(teile[1])))
Mein Problem liegt im unteren Bereich. Wenn ich eine Koordinate geändert habe und in der Variable line stehen habe, weiß ich nicht wie ich den Wert wieder in meine Liste (zeilen) bekomme.

Wie würdet ihr das angehen?

Re: Listenelement bei Bedarf ändern

Verfasst: Dienstag 23. August 2011, 21:32
von EyDu
Hallo.

Ich würde einfach das ConfigParser-Modul verwenden ;-) Damit ist die Wahrscheinlichkeit für Fehler geringer und du bekommst gratis noch Features dazu.

Wenn du es unbedingt mit deinem Code erledigen möchtest, was ich nicht empfehlen würde, dann würde ich an deiner Stelle einfach eine neue Liste erzeugen.

Noch zu deinem Code:
- Dateien solltest du immer mit dem with-Statement öffenen, dann werden sie auch immer wieder korrekt geschlossen.
- Schau dir mal List Comprehensions an, damit kann man alle deine Funktionen locker in zwei Zeilen schreiben

Sebastian

Re: Listenelement bei Bedarf ändern

Verfasst: Dienstag 23. August 2011, 21:39
von peddy
Ok, super. Das sind ja jetzt einige Punkte, an denen ich arbeiten kann. Dann mach ich mal morgen meine Hausaufgaben und werde berichten.