Textdatei zeilenweise kopieren

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
Oswald_Mario
User
Beiträge: 6
Registriert: Dienstag 10. Juli 2007, 14:15

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
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?
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

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"
https://www.xing.com/go/invite/18513630.6a91d4
Oswald_Mario
User
Beiträge: 6
Registriert: Dienstag 10. Juli 2007, 14:15

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
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);'
Antworten