Bestimmte Zeilen aus Text-Datei löschen

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
Tilo
User
Beiträge: 4
Registriert: Sonntag 5. August 2018, 22:07

Hallo,

ich möchte ein Python Script haben, dass eine .txt Datei nach z.B. "Hallo Du" durchsucht und alle Zeilen löscht, die Hallo Du in ihnen stehen haben. Der Rest der Datei soll allerdings intakt bleiben, weshalb ein Clear außer Frage ist. Das ganze soll durchgehend laufen.

Ich brauche das, da ich ein anderes Script habe das unvermeidlich (!) sachen, die ich nicht benötige in Zeilen schreibt aber dazwischen auch das ist, was ich benötige.

Ich hoffe mir kann jemand helfen :D

Tilo
Tilo
User
Beiträge: 4
Registriert: Sonntag 5. August 2018, 22:07

Code: Alles auswählen

    if message.author.bot:
            data = []
            Hax = message.content
            data.append(Hax)
            with open('Result.txt', 'a') as out_file:
                out_file.write('{0}\n'.format(', '.join(str(n) for n in data)))
            print("Successfully claimed and saved")
Das ist der Code den ich zum Schreiben der Text-Datei verwendet habe. habe ihn nur mal reinkopiert für den Falle dass er wichtig ist^^
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tilo: Der Code zum schreiben macht keinen Sinn. Da ist eine Liste die grundsätzlich nur *ein* Element enthält. Das lässt sich auch so schreiben:

Code: Alles auswählen

        if message.author.bot:
            with open('Result.txt', 'a') as out_file:
                out_file.write('{0}\n'.format(message.content))
            print('Successfully claimed and saved')
Wenn das Programm auch in die Datei schreiben kann während Du versuchst daraus Zeilen zu löschen, dann sehe ich ein Problem. Denn man kann aus einer Datei keine Zeilen löschen. Das läuft letztendlich auf neu schreiben ohne die unerwünschten Zeilen hinaus. Und dazu sollte man sicherstellen, dass die Datei während der ”Löschaktion” nicht zusätzliche Zeilen bekommen kann.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Tilo
User
Beiträge: 4
Registriert: Sonntag 5. August 2018, 22:07

Oh, danke.

Heißt das, es ist nicht möglich? Ich habe online etwas gefunden, wo eine bestimmte Zeile ausgewählt wurde (z.B. Zeile 10) und diese dann gelöscht wurde. Vielleicht kann man ja die Zeile auslesen, in der das unerwünschte geschrieben wird.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wie __blackjack__ schon sagt musst du sicher stellen, dass nicht zwei Prozesse gleichzeitig in die Datei schreiben wollen. Also du kannst entweder die Datei einlesen, unerwünschte Zeilen löschen und die Datei noch schreiben _oder_ neue Zeilen hinzufügen. Beides gleichzeitig geht nicht, jedenfalls nicht mit einer normalen Text-Datei.

Gruß, noisefloor
Tilo
User
Beiträge: 4
Registriert: Sonntag 5. August 2018, 22:07

Ok, das habe ich verstanden. Aber wäre es denn möglich, wenn keine Datei die .txt gerade benutzt, unegwünschte Zeilen zu löschen? Dann könnte man ja z.B. das Schreibprogramm alle 60 sekunden die datei für 10 Sekunden schließen, damit das 2. Programm löschen kann.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das erfordert ja eine komplizierte Synchronisation. Kannst Du mal genauer erzählen, welches Programm schreibt und was Du mit den Daten machen willst.
Antworten