writelines ändert LF in CRLF

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
Lebostein
User
Beiträge: 9
Registriert: Freitag 4. August 2006, 09:03

Beim Speichern einer Liste mit Strings (Python unter Windows) wird aus dem [LF] = \n ein [CR][LF]. Es werden also 2 Bytes pro Zeilenumbruch gespeichert. Wie sage ich Python, dass er stets nur das [LF] in die Datei schreiben soll (also eine Textdatei für UNIX)?

Code: Alles auswählen

liste = ['a\n', 'b\n', 'c\n']
file = open('test.txt', 'w')
file.writelines(liste)
file.close()
In HEX:

Ergebnis: 61 0D 0A 62 0D 0A 63 0D 0A
Erwartet: 61 0A 62 0A 63 0A
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Dazu solltest du die Datei im Binärmodus und nicht im Textmodus öffnen:

Code: Alles auswählen

open('test.txt', 'wb')
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten