Seite 1 von 1
oeffnen und modifizieren von files mit write
Verfasst: Montag 9. Juli 2007, 23:04
von newbie25946
moin,
habe eine textdatei beispiel_write.txt mit
A
B
C
an deren zeilen ich jeweils gerne etwas anhängen wollte. habe verschiedene moeglichkeiten probiert - die alle nicht klappen... vielleicht kann mir jemand helfen, habe offensichtlich ein ziemliches brett vorm kopf. geschrieben habe ich
Code: Alles auswählen
#!/usr/bin/python
f = file('beispiel_write.txt', 'r+')
for line in f.readline():
if line.startswith('A'):
line = line[:-1] + '_test\n'
f.write(line)
elif line.startswith('B'):
line = line.replace('\n', '_test\n')
f.write(line)
print 'hello'
elif line == 0:
break
und haette gerne als ergebnis
A_test
B_test
C
bekomme aber leider
A
A_test
verstehe nicht, warum 'elif' offensichtlich ueberhaupt nicht ausgefuehrt wird und A dafuer doppelt...
waere super, wenn mir jemand weiterhilft!
newbie25946
Verfasst: Montag 9. Juli 2007, 23:58
von veers
Das readline kannst du dir sparen:
for line in f reicht.
Und zum elif, auch das kannst du weglassen. For bricht ab sobald alle Zeilen durch sind.
Gruss,
Jonas
PS: Irgend wie stinkts hier so nach Hausaufgaben
Verfasst: Dienstag 10. Juli 2007, 07:23
von Zap
Hallo newbie25946 und Willkommen
newbie25946 hat geschrieben:bekomme aber leider
A
A_test
Das liegt daran das du die Datei mit r+ öffnest, was soviel bedeutet wie: "öffnen und weiteren Inhalt anhängen".
Es gibt unter anderem 2 Lösungswege:
- Datei A lesend öffnen mode="r"
- den Inhalt zwischenspeichern
- Datei A schließen
- zwischengespeicherten Inhalt ändern.
- Datei A wieder öffnen (diesmale schreibend mode="w")
- geänderten Inhalt abspeichern
- Datei A schließen
oder (Sicherer, weil Quelldatei unangetastet bleibt)
- Datei A lesend öffnen mode="r"
- Datei B öffnen (schreibend mode="w")
- Inhalt von A einlesen, ändern und in B speichern
- Datei A schließen
- Datei B schließen
Viel erfolg
Verfasst: Dienstag 10. Juli 2007, 22:58
von newbie25946
vielen dank fuer die hints - klappt wunderbar!
aus neugier: verstehst du in ansatz 1 unter folgende methode
Code: Alles auswählen
#!/usr/bin/python
f = file('beispiel_write.txt')
lines = f.readlines()
f.close()
h = file('ansatz_1.txt', 'w')
for i in lines:
i = i.replace('\n', '_test\n')
h.write(i)
h.close()
oder an welche art 'zwischenspeichern' dachtest du?
gruß newbie25946
ps dank auch fuer den stilistischen wink an jonas - hausaufgaben riechen allerdings anders
Verfasst: Dienstag 10. Juli 2007, 23:07
von BlackJack
Das war mit zwischenspeichern gemeint. Aber wenn die Zieldatei eine andere ist, ist das ja nicht notwendig. Das muss man nur machen, wenn das Ergebnis wieder in die selbe Datei gespeichert werden soll.
Verfasst: Dienstag 10. Juli 2007, 23:17
von newbie25946
stimmt, ging ja um mehr sicherheit bei unterschiedlichen dateien...
ist es denn tatsaechlich so unsicher, die gleiche datei zu verwenden?
Verfasst: Dienstag 10. Juli 2007, 23:42
von Zap
Wenn man weiß was man tut nicht, aber wenn man nur eine Datei und nichtmal ne Sicherheitskopie hat und der Versuch diese zu maniplulieren mißlingt... das kommt irgendwie schlecht
Es kommt auf den Anwendungsfall an, was man machen will.
Ob man es halt möchte das die Originaldatei ersetzt wird usw.
Verfasst: Mittwoch 11. Juli 2007, 00:10
von newbie25946
na, dann vielleicht besser auf nummer sicher..
jedenfalls danke fuer konstruktive ratschlaege/ spontanes antworten!
habe sicher mal wieder eine frage ans forum
newbie25946