»Warum glauben einem Leute sofort, wenn man ihnen sagt, dass es am Himmel 400 Billionen Sterne gibt, aber wenn man ihnen sagt, dass die Bank frisch gestrichen ist, müssen sie draufpatschen?« – Unbekannter Autor
27 Insiderwissen
In diesem Kapitel sollen kleinere Module vorgestellt werden, die im Programmieralltag von Nutzen sein können. Die hier vorgestellten Module implementieren keine neuen Konzepte oder irgendetwas Weltbewegendes, sie sind einfach nur praktisch. Es lohnt sich also allemal, einen Blick auf die folgenden Abschnitte zu werfen.
27.1 Dateien direkt mit einem bestimmten Encoding lesen 

Das Modul codecs bietet Zugriff auf Funktionen und Typen, die den Umgang mit Encodings betreffen. Insbesondere stellt codecs dabei eine Funktion open zur Verfügung, mit der das Lesen und Schreiben von nicht mit ASCII kodierten Text-Dateien zum Kinderspiel wird:
>>> import codecs >>> datei = codecs.open("ist das einfach.txt", "wb", "utf8") >>> datei.write(u"Häääälllööööö") >>> datei.close() >>> datei = codecs.open("ist das einfach.txt", encoding="utf8") >>> hallo = datei.read() >>> hallo u'H\xe4\xe4\xe4\xe4lll\xf6\xf6\xf6\xf6\xf6' >>> print hallo Häääälllööööö
Wie Sie sehen, unterscheidet sich die Schnittstelle von codecs.open von der der Built-in Function open dadurch, dass Sie zusätzlich einen Parameter encoding übergeben können, der das Encoding angibt, mit dem gelesen bzw. geschrieben werden soll.
Sie müssen nur dafür sorgen, dass alle Strings, die Sie an ein mit codecs.open erzeugtes Dateiobjekt übergeben, unicode-Instanzen sind, da sonst Fehler bei der Umwandlung auftreten können. In der Regel sind alle aus einer solchen Datei gelesenen Strings auch wieder unicode-Instanzen.




bestellen





