text aus einer txt- 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
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

hallo zusammen

mich würde interessieren wie man einen text aus einer txt. datei löscht! welche befehle gibt es da!! ich suche schon ein ganz zeit lang finde aber nichts!

könnt ihr mir bitte helfen?

Danke
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Du kannst aus einer Datei nichts direkt löschen, du musst sie lesen, ändern und neu schreiben. Schaue dir dazu die Funktion `open` an. Ist die Datei nicht zu groß, kannst du sie komplett in einen String einlesen und dann einfach die Teile des Strings wieder schreiben, die nicht gelöscht werden sollen.

Stefan
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

heiß das nun ich muss die txtDatei öffnen und dann anschließend mit read() das File lesen und weiters mit write darüber schreiben oder habe ich das jetzt falsch verstanden? und zu meiner txt Datei sie hat nur eine Zahl also dürfte die größe keine Rolle spielen!!!!


danke
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Richtig. Datei zum Lesen öffnen, auslesen, schließen. Dann zum Schreiben öffnen, schreiben, schließen. Fertig.

Wenn du die alten Daten nicht mehr brauchst, dann kannst du den Schritt mit dem Lesen natürlich überspringen.
Das Leben ist wie ein Tennisball.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

Hallo ich habe nun deinen Rat probiert bin jedoch nich nicht zum ergebnis gekommen. ich stelle mal mein Skript hier herein vielleicht weiß ja wer woran es liegt.

Code: Alles auswählen


import os

import os.path






if os.path.exists("C:/variante.txt"):
        f = open("C:/variante.txt")
        read_data = f.read()
        anzahl = (int(read_data) + 1)
        if anzahl == 51:
                print anzahl
                f.close()
                os.remove("C:/variante.txt")
                f_dat = open("C:/exit_from_python", "w")
                f.dat.close()
        else:
                zahl = str(anzahl)
                print zahl
                f.close()
                f = open("C:/variante.txt", "w")
                f.write(zahl)
                f.close()


else:
        writeFile = open("C:/variante.txt", "w")
        writeFile.write("1")
        writeFile.close()

wäre fro um jeden vorschlag

was soll es machen:

es soll kontroliieren ob die txt datei vorhanden ist wenn ja lesen und den wert um ein erhöhen. bis 51 dann soll sie die datei löschen und eine weitere erzeugen. gibt es keine datei muss es eine erzeugen mit dem wert 1

Danke
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Zeile 21: " f_dat" muss es heißen.

Du solltest etwas wenig Leerzeilen benutzen und Konstanten verwenden. Dann noch ein wenig Fehlerbehandlung und etwas PEP 8.

Du solltest dir mal Gedanken machen, wie du die beiden else-Teile zusammenfassen kannst. Ist gar nicht so schwierig.
Das Leben ist wie ein Tennisball.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

danke aber ich hab noch ein ganz anderes problem wenn ich das Skript starte kommt mir diese Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\optadams\test.py", line 12, in ?
    anzahl = (int(read_data) + 1)
ValueError: invalid literal for int():
[3796 refs]
Drücken Sie eine beliebige Taste . . .

und ich weiß nicht woran es liegt!!
habt ihr eine ahnung?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

``read_data`` ist eben kein dezimales Literal und das erwartet der Code.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

ich habe mir gedacht man kann einen string in ein int umwandeln?

und wie könnte man das Problem lösen?

danke
yantur_v_b
User
Beiträge: 17
Registriert: Montag 25. Mai 2009, 10:32

max793 hat geschrieben:ich habe mir gedacht man kann einen string in ein int umwandeln?
Laß Dir doch mal ausgeben, wie read_data aussieht. Vielleicht hängt ja ein "\n" daran?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dein Code sagt nicht mal im Ansatz, was du tun willst. Wenn ``anzahl`` die Anzahl der Zeilen sein soll, suchst du:

Code: Alles auswählen

read_data = f.readlines()
anzahl = len(read_data)
Was du momentan machst ist den Inhalt der Datei komplett auszulesen und da das nicht nur aus Zahlen zu bestehen scheint, fliegt dir das Skript um die Ohren.

Erzähl doch mal, was du genau machen willst und werf uns nicht nur die kleinen Bröckchen zu.
Antworten