mehrere Begriffe in einer Datei ersetzen

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
seltersarmee
User
Beiträge: 5
Registriert: Donnerstag 8. November 2012, 15:18

Donnerstag 8. November 2012, 15:25

Hallo,

nach einiger Recherche im Netz, konnte ich meine Frage nur hinreichend befriedigend beantworten.
Ich möchte folgendes erreichen:
das skript soll die datei "Datei1.txt" öffnen und dann die Werte von Z_1 = 0 und Z_2 = 0 auf 1 setzen. Danach soll die Datei in "Datei2.txt" umbenannt und gespeichert werden. Anschließend wird "Datei2" geöffnet und die Werte auf 3 gesetzt. usw.
bei mir sieht das folgendermaßen und vor allem umständlich aus:
i=1
while i<=6:
Job = open("Datei"+str(i+1)+".py","w")
data = open("Datei"+str(i)+".py").read()
Job.write(re.sub("Z_1 = *.*", "Z_1 = "+str(i), data))
Job.close()
Job2 = open("Datei2."+str(i)+".py","w")
data = open("Datei"+str(i)+".py").read()
Job2.write(re.sub("Z_2 = *", "Z_2 = "+str(i), data))
Job2.close()
i=i+1

Könnt ihr mir da bitte helfen?
EyDu
User
Beiträge: 4872
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Donnerstag 8. November 2012, 15:48

Hallo und willkommen im Forum!

Gleich erstmal ein paar Anmerkungen:
- Das Forum hat Code-Tags für Python, dann kan man deinen Beitrag auch lesen.
- Wenn man eine Schleife mit einer Zählvariable hat, dann möchte man for benutzen und nicht while.
- Dateien solltest du mit dem with-Statement öffnen.
- Strings solltest du nicht mittels + zusammensetzen, dazu gibt es Stringformatting

Zu deinem eigentlichen Problem: Reguläre Ausdrücke funktionieren nicht so, wie du sie verwenden willst. Du sollest damit mal ein wenig herumtesten und ein Tutorial durcharbeiten.
Das Leben ist wie ein Tennisball.
Benutzeravatar
/me
User
Beiträge: 3289
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Donnerstag 8. November 2012, 16:10

seltersarmee hat geschrieben:das skript soll die datei "Datei1.txt" öffnen und dann die Werte von Z_1 = 0 und Z_2 = 0 auf 1 setzen. Danach soll die Datei in "Datei2.txt" umbenannt und gespeichert werden. Anschließend wird "Datei2" geöffnet und die Werte auf 3 gesetzt. usw.
Nach der Beschreibung behältst du am Ende nur eine einzige Datei übrig. "Datei1.txt" wird zu "Datei2.txt", "Datei2.txt" wird zu "Datei3.txt", "Datei3.txt" .. nun es sollte klar sein. Der von dir gezeigte Code dazu sieht allerdings anders aus.

Wie ist es denn jetzt wirklich gemeint?
seltersarmee
User
Beiträge: 5
Registriert: Donnerstag 8. November 2012, 15:18

Donnerstag 8. November 2012, 16:21

Ich meine es so, dass am Ende alle Dateien noch vorliegen. Bei meinem Code heißen die "guten" Dateien 2.xxx, weil ich nicht weiß, weiß ich es besser machen kann. Gewünscht ist es aber so, dass die beiden Variablen geändert werden und die Datei mit einer Zahl höher im Namen abgespeichert wird.
Antworten