Seite 1 von 1

Textdatei zeilenweise kopieren

Verfasst: Donnerstag 12. Juli 2007, 14:49
von Oswald_Mario
Hallo,

ich würde gerne eine Änderung in einer Textdatei vornehmen.
Da ich es nicht geschafft habe (und es glaub ich auch nicht geht) nur bestimmte Charakter einer Zeile in einer Datei zu ändern, möchte ich nun eine Textdatei Zeile für Zeile in eine neu angelegte Datei kopieren und
in der entsprechenden, mir bekannten Zeile, eine Änderung durchführen.

Wenn ich das mittels einer For-Schleife mache, wie kann ich dann die Länge (Zeilenanzahl) der Textdatei bestimmten? (Länge der Schleife)
("len" geht nicht)

Wie änderne ich am besten eine Zahl, die eine mir nicht bekannte Anzahl von Stellen hat, jedoch die linkeste Stelle (quasi MSB) immer an der gleichen Spaltenzahl steht?

Danke und LG,
Mario

Verfasst: Donnerstag 12. Juli 2007, 15:17
von BlackJack
Ohne die Datei komplett einzulesen kann man nicht sagen wieviele Zeilen es sind. Musst Du das denn wissen? Eine ``for``-Schleife über die Datei geht über alle Zeilen.

Kannst Du für die zweite Frage mal Beispiele zeigen?

Re: Textdatei zeilenweise kopieren

Verfasst: Freitag 13. Juli 2007, 08:06
von lutz.horn
Oswald_Mario hat geschrieben:möchte ich nun eine Textdatei Zeile für Zeile in eine neu angelegte Datei kopieren und
in der entsprechenden, mir bekannten Zeile, eine Änderung durchführen.

Code: Alles auswählen

outfile = open("outfile", "w")
lines = 0
for line in open("infile"):
  if line == "foo\n": # Oder was immer die gesuchte Zeile auszeichnet.
    line = "bar\n"
  outfile.write(line)
  lines = lines + 1

outfile.close()
print lines, "Zeilen"

Verfasst: Freitag 13. Juli 2007, 08:28
von Oswald_Mario
Ja genau das hab ich gesucht bezüglich FIle kopieren.

- Zu meinem anderen Problem:
ich habe folgende Zeile im Textfile, die ich editieren möchte:

" Setup(1, STEP, STEP+485);"

Ich weiß, dass die Zahl (in diesem Fall 485) immer in der Splate 485 beginnt und das sie mit einem ")" endet, jedoch nicht wieviele Stellen sie hat. Nun möchte ich zu dieser Zahl eine mir bekannte weitere Zahl hinzuaddieren und dann wieder ausgeben...

Ich probier das gerade mit Charakters einzeln einlesen, aber ich weiß nicht genau wie ich das dann zu einer Zahl bringe...

LG Mario

Verfasst: Freitag 13. Juli 2007, 15:08
von BlackJack
Du meinst wohl Spalte 21. Du könntest zum Beispiel ab Index 21 den Index der schliessenden Klammer suchen, die Teilzeichenkette mit den Ziffern "ausschneiden", nach `int` wandeln, die Konstante aufaddieren und dann aus der alten Zeichenkette vor und nach der Zahl eine neue basteln.

Code: Alles auswählen

In [41]: a = ' Setup(1, STEP, STEP+485);'

In [42]: a[21:]
Out[42]: '485);'

In [43]: b = a.index(')', 21)

In [44]: b
Out[44]: 24

In [45]: c = a[21:b]

In [46]: c
Out[46]: '485'

In [47]: d = int(c)

In [48]: d
Out[48]: 485

In [49]: a[:21] + str(d + 5) + a[b:]
Out[49]: ' Setup(1, STEP, STEP+490);'