Inhalt einer Textdatei mit Python überschreiben

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
Benutzeravatar
PCalsVentilator
User
Beiträge: 6
Registriert: Samstag 12. März 2016, 15:32

Hallo an alle Leser/innen,

Gerade habe ich mich dem Thema Textdateien Bearbeiten mit Python gewidmet, und wie man daraus evtl. erkennen kann, bin ich noch ziehmlich neu hier.
Ich habe folgenden Code in Python programmiert, welcher auch einwandfrei funktioniert:

Code: Alles auswählen

Datei = open [pfad, "r+"]				#Datei mit Lese-und Schreibrechten öffnen

i = 255

for line in Datei:
    print(line.rstrip())					#Inhalt der Textdatei Zeilenweise wiedergeben


Datei.write(str(i))


Datei.close()
Das Problem: Mit dem Befehl Datei.write() überschreibe ich den Inhalt der Textdatei anscheinend nicht, sondern füge nur den zu schreibenden Text am existierenden Text hinten an... Wie kann ich das ändern, sodass ich den extistierenden Text überschreibe?

Übrigens: Verwendungszweck ist die Speicherung einzelner Variablen von einem Spieler in einem Blender-Spiel.


Gruß

PCalsVentilator
BlackJack

@PCalsVentilator: Der Code funktioniert sicherlich nicht, denn `pfad` ist nicht definiert. Wenn man das tut, dann wird man als nächstes um die Ohren gehauen bekommen das `open` nicht indexierbar ist. Zeig nicht irgendwelchen Code der so ähnlich ist wie der den Du tatsächlich verwendest, denn der kann zusätzliche Probleme haben zu denen über die Du eigentlich reden möchtest, oder es kann sogar sein das ein Problem das Du mit dem tatsächlichen Code hast, in so einem zusätzlich erfundenen Code gar nicht enthalten ist. Da ist es dann sehr schwer zu helfen.

Wenn alle Namen definiert sind und `open()` korrekt verwendet werden würde, dann liegt das Problem am Modus 'r+'. Wenn Du eine Datei (neu) schreiben möchtest, dann öffne sie am besten auch nur zum schreiben. Falls Du sie davor lesen möchtest, dann öffne (und schliesse) sie halt zweimal, einmal zum lesen, und dann später noch einmal zum schreiben. Die Dateimodi mit dem '+' sind selten sinnvoll. Eigentlich nur wenn man eine Binärdatei mit einer bekannten Struktur hat und dort freien Lese- und Schreibzugriff auf Ausschnitte haben muss. Dann sollte man die Datei aber auch explizit im Binärmodus öffnen. So etwas braucht man aber eher selten.
Benutzeravatar
PCalsVentilator
User
Beiträge: 6
Registriert: Samstag 12. März 2016, 15:32

OK, danke für die Antwort.

Ich selbst habe natürlich eine Pfad-Angabe gemacht, zur Vervollständigung nochmal der Ausschnitt aus dem Code:

Code: Alles auswählen

Datei = open(D:\\Python\\HalloWelt.txt, "r+")
Deinen Rat werde ich befolgen... Melde mich dann wieder!


Gruß

PCalsVentilator
BlackJack

Auch das ist nicht der tatsächliche Code:

Code: Alles auswählen

In [5]: Datei = open(D:\\Python\\HalloWelt.txt, "r+")
  File "<ipython-input-5-a2201c7a5369>", line 1
    Datei = open(D:\\Python\\HalloWelt.txt, "r+")
                  ^
SyntaxError: invalid syntax
Benutzeravatar
PCalsVentilator
User
Beiträge: 6
Registriert: Samstag 12. März 2016, 15:32

Ohne jetzt nervig zu sein, aber wenn ich das richtig aufgefasst habe muss eine Festplatte mit dem Laufwerksnamen D: im Computer eingehängt sein. Aber ich könnte genauso ein Verzeichnis im C:\\Users\****\Documents verwenden... Du kannst das ja mal zum Testen verwenden.


Gruß

PCalsVentilator
BlackJack

@PCalsVentilator: Das hat noch überhaupt gar nichts mit dem Pfad selbst zu tun, das ist syntaktisch einfach kein Python. Im echten Code hast Du sicher noch Anführungszeichen verwendet damit das ein Zeichenkettenliteral wird. Computer sind saudumm und deswegen sehr pedantisch. Solche Kleinigkeiten sind wichtig, auch bei der Fehlersuche. Darum ist es besser bei Problemen den *tatsächlichen* Code zu zeigen, oder zumindest welchen den man selber mal ausprobiert hat und sich sicher ist, das er genau das Problem demonstriert vor dem man steht, statt so ungefähr das abzutippen was man versucht hat. Das gleiche gilt für Fehlermeldungen oder Beispielein- und ausgaben. All das am besten 1:1 kopieren, damit sich da keine Veränderungen einschleichen.
Benutzeravatar
PCalsVentilator
User
Beiträge: 6
Registriert: Samstag 12. März 2016, 15:32

Oh gott, Bin ich dumm!
Falsch abgeschrieben... Für die Zukunft merke ich mir das.

Trotzdem, der Fehler lag an der Funktion .
Jetzt Habe ich den Code in zwei Abschnitte aufgeteilt, einmal die Datei Lesbar und einmal Schreibbar aufgerufen, jetzt funktioniert es.

Danke!

PCalsVentilator
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

PCalsVentilator hat geschrieben:Falsch abgeschrieben... Für die Zukunft merke ich mir das.
Gib die Hoffnung nicht auf. Es soll demnächst ganz moderne Computersysteme geben die Copy&Paste erlauben.
Benutzeravatar
PCalsVentilator
User
Beiträge: 6
Registriert: Samstag 12. März 2016, 15:32

/me hat geschrieben:
PCalsVentilator hat geschrieben:Falsch abgeschrieben... Für die Zukunft merke ich mir das.
Gib die Hoffnung nicht auf. Es soll demnächst ganz moderne Computersysteme geben die Copy&Paste erlauben.
Ja, bin schon gespannt darauf, glaubst du die kosten über 2000 Euro?
Aber ich warte lieber noch etwas, bis es Sonderaktionen gibt ;)
Antworten