Strings in eine Datei schreiben und anhängen

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
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Hallo,
ich versuche gerade Strings mittels Eingabe, in eine Datei zu schreiben. Wenn ich die zweite Eingabe mache, wird der erste String in der Datei wieder überschrieben.
ich möchte aber, dass der nächste Strings angehängt wird.

Kann mir jemand helfen?
l | g
sunnyi
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

mit "a"-append die Datei öffnen:

Code: Alles auswählen

f = file("datei.txt", "a")

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Ups -
a wie append

Danke vielmals
l | g
sunnyi
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Hallo jens,
und wie macht man bei append, dass jede Eingabe in eine separate Zeile geschrieben wird?
l | g
sunnyi
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hänge an deinen String bzw. an die Eingabe ein "\n" Newline-Zeichen dran...
Zeigt doch mal dein Source-Code...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Code: Alles auswählen

answer=raw_input("Text-Eingabe: ")

f = file( "datei.txt", "a" )
f.writelines( answer )
f.close()
l | g
sunnyi
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

So sollte es gehen... obwohl scheibt write() schon selber ein "\n"? Weiß ich jetzt nicht... Wenn du eine leerzeile in der Datei hast, dann ja ;)

Code: Alles auswählen

answer=raw_input("Text-Eingabe: ")

f = file( "datei.txt", "a" )
f.write( answer + "\n" )
f.close()

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Yep so geht es,
Ich dachte erst writelines macht das von alleine?
Na dann danke für die Hilfe
l | g
sunnyi
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Tut's nicht: http://python.org/doc/lib/bltin-file-ob ... ml#l2h-250
Write a sequence of strings to the file [...] does not add line separators.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Klar, sonst kommt der nächste und will am Zeilenende anhängen. :)
l | g
sunnyi
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Das darfst Du auch als Angebot an Dich, den Programmierer, verstehen: Für welches Betriebssystem soll beispielsweise Deine Datei wie erscheinen?
In anderen Programmiersprachen, beispielsweise C, worauf Python ja basiert, ist der Programmierer ebenfalls gezwungen Newline-Charaktere anzuhängen.
Hier wie dort ist ein weiterer Grund, daß Du ja nicht beim Einlesen eines Strings immer vorher weißt, wo der terminierende Charakter stehen soll - auf diese Weise kannst Du das entscheiden ohne, daß Du erst solche Zeichen rausfiltern, komplizierte Stringoperationen machen und dann wieder anhängen mußt.

Das alles nur nebenbei ...

Gruß,
Christian
sunnyi
User
Beiträge: 19
Registriert: Montag 14. März 2005, 19:32

Klar Christian,
Ich bin zur Zeit eben erstmal damit beschäftigt, mich in die syntaktischen Gegebenheiten einzuarbeiten.
Manche Dinge sind in Python wesentlich leichter als in anderen Sprachen.

Naja -
Ich arbeite daran
l | g
sunnyi
Antworten