Seite 1 von 1
Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 15:07
von Phobit
Hallo,
ganz kurze Frage,
gibt es in Python einen Befehl mit dem ich in einer txt Datei eine bestimmte Anzahl Zeilen (bei 0 angefangen zu zählen) löschen kann?
Danke schonmal im Vorraus

Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 15:38
von nezzcarth
Nein, so was gibt es nicht "in fertig", weil man es ganz leicht selbst programmieren kann. Du kannst die Datei entweder erst komplett einlesen und dann nur die Zeilen zurück schreiben, die erhalten bleiben sollen, oder du schreibst "on the fly" in eine temporäre Datei und ersetzt die Originaldatei zum Schluss. Zum Zählen kannst du 'enumerate' in Kombination mit einer Schleifen oder 'itertools.dropwhile' verwenden.
Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 15:52
von Bolitho
Code: Alles auswählen
with open("DEINEDATEI.txt") as file:
f = file.readlines()
f = f[2:] # "Löscht" die ersten beiden Zeilen / Definiert die Liste neu, ab dem dritten Eintrag
print(f)
suchst du sowas vielleicht?
Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 15:59
von Phobit
ahh, genau sowas, danke...
wenn ich bei f[2:] das zwei durch ne Variable einsetze, muss das dann so ausehen?
Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 16:05
von Bolitho
naja, das lässt sich doch ganz einfach selbst testen, oder?
Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 16:11
von Phobit
Ich hab ein bisschen rumprobiert.
Ich habs in minen Code eingesetzt:
Code: Alles auswählen
with open("TestLog.txt") as getdatei:
komplett = getdatei.read()
print(komplett)
f = komplett[2:]
print(f)
Dort wird das ganze als Fließtext und nicht als Liste ausgegeben, demnach werden auch nur die ersten beiden Buchstaben mit dem Command abgetrennt.
Gibt es auf dieses Beispiel bezogen eine Möglichkeit, die kompletten ersten beiden Zeilen abzutrennen?
Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 16:12
von snafu
nezzcarth hat geschrieben: Sonntag 28. Oktober 2018, 15:38
Zum Zählen kannst du 'enumerate' in Kombination mit einer Schleifen oder 'itertools.dropwhile' verwenden.
Würde ich gar nicht so kompliziert machen. Entweder, wie gezeigt, Slicing auf
f.readlines() oder alternativ:
Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 16:14
von snafu
@Phobit: Du musst einfach die richtige Methode verwenden. Nicht
read(), sondern
readlines().

Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 16:17
von Phobit
Ja, aber möchte ja read, und nicht readlines
bzw wie sonst krieg ich die Liste wieder zurück als normaler Text in die Datei?
Ich hab das Gefühl ich überseh irgendwas total simples xD
Re: Bestimmte Zeilenazahl löschen
Verfasst: Sonntag 28. Oktober 2018, 16:51
von Sirius3
Genauso wie man Zeilen lesen kann, kann man auch Zeilen in eine Datei schreiben.
Code: Alles auswählen
from itertools import islice
with open("input.txt") as lines:
with open("output.txt", "w") as output:
output.writelines(islice(lines, 10, None))