Leere Zeilen eines Textdokuments mit Python entfernen?

2 Antworten

ungefähr so:

with open('Eingabe_Datei.txt') as Eingabe, \
open('Ausgabe_Datei.txt', 'w') as Ausgabe:
        for line in Eingabe:
                if line[:-1]:
                         Ausgabe.write(line)

Habs noch nicht versucht, aber wie wäre es mit

with open(filename, 'r+') as f:
	for line in f:
		if line = '\n':
			f.write('') 

Muss ich nachher mal ausprobieren...


Kreasteve  15.12.2019, 22:09

Das ist jetzt das, was ich bisher geschafft habe:

import fileinput


with fileinput.FileInput(filename, inplace=True) as file:
    for line in file:
        if line != "\n":
            print(line, end='')

Bestimmt nicht sehr effektiv, da jede Zeile, die etwas enthält scheinbar neu geschrieben wird.

0
Kreasteve  15.12.2019, 22:35
@Kreasteve

... und das tut wohl nicht viel anderes als:

from tempfile import mkstemp
from shutil import move
from os import fdopen, remove


def removeEmptyLines(file_path):
    fh, abs_path = mkstemp()   #erzeugt temporäre Datei irgendwo auf dem Rechner
    with fdopen(fh,'w') as new_file:   #öffnet die temporäre Datei
        with open(file_path) as old_file:   #öffnet die alte Datei
            for line in old_file:
                if line != '\n':
                    new_file.write(line)    #schreibt nur Zeilen, die etwas enthalten in die temporäre Datei
    remove(file_path) #entfernt die alte Datei
    move(abs_path, file_path) #verschiebt die temporäre Datei dorthin wo die Alte war
    
removeEmptyLines(filename)

Das habe ich von hier und etwas angepasst.

0