Seite 1 von 1

text aus einer txt- datei löschen

Verfasst: Freitag 19. Juni 2009, 09:57
von max793
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

Verfasst: Freitag 19. Juni 2009, 10:01
von sma
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

hallo

Verfasst: Freitag 19. Juni 2009, 10:11
von max793
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

Verfasst: Freitag 19. Juni 2009, 10:22
von EyDu
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.

Verfasst: Freitag 19. Juni 2009, 10:44
von max793
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

Verfasst: Freitag 19. Juni 2009, 11:02
von EyDu
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.

Verfasst: Freitag 19. Juni 2009, 11:53
von max793
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?

Verfasst: Freitag 19. Juni 2009, 11:58
von cofi
``read_data`` ist eben kein dezimales Literal und das erwartet der Code.

Verfasst: Freitag 19. Juni 2009, 12:02
von max793
ich habe mir gedacht man kann einen string in ein int umwandeln?

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

danke

Verfasst: Freitag 19. Juni 2009, 12:09
von yantur_v_b
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?

Verfasst: Freitag 19. Juni 2009, 12:12
von cofi
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.