Listenelement bei Bedarf ändern

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
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

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?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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
Das Leben ist wie ein Tennisball.
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

Ok, super. Das sind ja jetzt einige Punkte, an denen ich arbeiten kann. Dann mach ich mal morgen meine Hausaufgaben und werde berichten.
Antworten