Hi
Ich hab ein paar Probleme mit writelines
So weit Ich weis kann damit mehrere Zeilen in eine Datei schreiben.
Das bekomme Ich aber nicht hin.
HILFE
probleme mit "writelines"
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
...
Selbst meine Kristallkugel beschwert sich schon über den Post.
Selbst meine Kristallkugel beschwert sich schon über den Post.
Wenn das nicht hilft, solltest du uns mal dein Problem erklären .. oder zumindest erst mal nennen.Python Library Reference hat geschrieben:file.writelines(sequence)
Write a sequence of strings to the file. The sequence can be any iterable object producing strings, typically a list of strings. There is no return value. (The name is intended to match readlines(); writelines() does not add line separators.)
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Wie sorgt man dafür dass "test1" oder 2 in die nächste Zeile der Datei geschrieben wird?
Code: Alles auswählen
test1 = "zwei"
test2 = "drei"
teste = test1 + test2
test = open("test.txt","w")
test.writelines(teste)
test.close()
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
file.writelines erwartet eine Sequenz, d.h. Tuple, Liste und Konsorten.
Du hast nichts anderes als einen String -> file.write
Du hast nichts anderes als einen String -> file.write
Code: Alles auswählen
test1 = "zwei"
test2 = "drei"
teste = "%s%s" % (test1, test2)
with open("test.txt","w") as test:
test.write(teste)
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
Code: Alles auswählen
test1 = "zwei"
test2 = "drei"
teste = "%s%s" % (test1, test2)
with open("test.txt","w") as test:
test.write(teste)
Es soll aber
zwei und
drei in die nächste zeile sein
Also keine Große Hilfe
Code: Alles auswählen
test1 = "zwei"
test2 = "drei"
teste = "%s\n%s" % (test1, test2)
with open("test.txt","w") as test:
test.write(teste)
Natürlich hast Du recht, dass man bei
"writelines()" einen Zeilenseparator erwarten könnte.
Die Doku (und Deine eigenen Erfahrungen) sagen aber,
dass dies nicht der Fall ist.
Also must Du selber einen einsetzen:
yipyip
"writelines()" einen Zeilenseparator erwarten könnte.
Die Doku (und Deine eigenen Erfahrungen) sagen aber,
dass dies nicht der Fall ist.
Also must Du selber einen einsetzen:
Code: Alles auswählen
from __future__ import with_statement
with open('hu', 'w') as fp:
fp.writelines([('%s' % i) * i + '\n' for i in range(1, 6)])
yipyip
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Du weisst schon, dass du mit der Verkettung von test1 und test 2 nur einen String erzeugst?
Ich glaube du solltest mal das Tutorial durcharbeiten.
Ich glaube du solltest mal das Tutorial durcharbeiten.
Code: Alles auswählen
import os
test1 = "zwei%s" % os.linesep
test2 = "drei%s" % os.linesep
with open("test.txt","w") as test:
test.writelines([test1, test2])
@cofi: Wenn Du `os.linesep` benutzt, musst Du auch Textdateien als Binärdateien öffnen, sonst macht Windows da zum Beispiel Murks, weil in `os.linesep` dort das Zeilenende-Zeichen '\n' selbst enthalten ist.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Da ich grad kein Windows greifbar hab (und keine Klimbzüge mit Wine machen will): Wie unterscheidet sich das denn von einem manuellen "\r\n" ? os.linesep ist schliesslich ein schlichter String oO
Wobei es mich aber nicht wirklich überrascht, dass Windows querschiesst
Wobei es mich aber nicht wirklich überrascht, dass Windows querschiesst
Wenn du die Datei nicht im Binärmodus öffnest, werden '\n' von der libc durch `os.linesep` ersetzt. Unter Windows übergibst du '\r\n'. Jetzt wird aber das '\n' ersetzt, also kommt am Ende '\r\r\n' heraus.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
- krisi12345
- User
- Beiträge: 205
- Registriert: Mittwoch 4. März 2009, 16:56
- Wohnort: Das schöne München
- Kontaktdaten:
DANKE-SCHÖN!!!