Hallo Wolfgang!
Du musst an ``f.write()`` in deinem Fall einen Unicode-String übergeben. Also so:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
text1 = u"\n\n\n hallo Welt \n\n"
f = codecs.open(TestPath, "w", "iso-8859-1")
f.write(text1)
f.close()
Weitere Informationen findest du evt. hier:
http://www.python-forum.de/topic-5095.html
Aahhh! Jetzt weiß ich was dein Problem ist.
help(codecs.open):
Files are always opened in binary mode, even if no binary mode
was specified. This is done to avoid data loss due to encodings
using 8-bit values. The default file mode is 'rb' meaning to
open the file in binary read mode.
Es nützt also nichts, einfach den Modus mit "w" anzugeben. Intern wird daraus ein "wb", was die automatische Umwandlung der Zeilenumbrüche ausschaltet.
Das kannst du umgehen, indem du aus "\n" ein "\r\n" machst.
Code: Alles auswählen
text1 = u"\n\n\n hallo Welt \n\n".replace("\n", "\r\n")
Die Zeilenumbrüche wären schon da, nur zeigt sie dein Editor nicht an, da dieser evt. nur mit "\r\n" umgehen kann. Typisch Windows. Nicht mal einen Editor mit dabei, der mit verschiedenen Zeilenumbrüchen umgehen kann.
mfg
Gerold