[Python-de] Python und das Newline-Problem?

Martin v. Löwis martin at v.loewis.de
Fri Apr 18 13:12:26 EDT 2003


Klaus Meyer <km-news1 at onlinehome.de> writes:

> wie behandelt Python das Newline-Problem zwischen den verschiedenen
> Plattformen. Die gängigsten Betriebssystem Windows, Unix,
> Mac... verwenden intern verschieden Zeichen für Newline. Python
> verwendet natürlich an vielen Stellen auch Newlines (Readlines,
> Writelines, "\n", $ in re usw.).

Pythons Datei-Typ (file) kennt "Text-Modus" und "Binär-Modus". Wenn
man Dateien im Textmodus öffnet, werden die Zeilenendenkonventionen
des aktuellen Systems verwendet. Im Binärmodus werden die Dateien
unverändert gelesen. Intern wird das Zeilenende stets durch '\n'
repräsentiert. 

> Was passiert, wenn man (Text)-Dateien zwischen den Betriebsystemen
> austauschen will, muss ich diese dann einmal "von Hand" für das andere
> BS konvertieren, oder kann Python "automagisch" mit allen Newlinetypen
> umgehen?

Python 2.3 fügt einen "Universal-Modus" hinzu, der Dateien in
verschiedenen Zeilenendenkonventionen (Windows, Unix, Mac). Dazu gibt
man beim Öffnen der Datei "U" als Modus an.

> Wie verhält es sich bei anderen Dateien (pickle, shelf...)?

Pickle verwendet die readline-Funktion des darunter liegenden
Dateiobjekts; shelf verwendet pickle.

> Was ist mit den Py-Scripten selber, die ja auch nur Textdateien sind?
> Muss man die auch für jede Plattform umwandeln, oder kann Py jeden
> Script lesen, egal, auf welcher Plattform mit welchem Newline erzeugt
> (ob das Script selber portabel ist, ist eine andere Frage...).

Nein, Python kann (schon seit langem) Quellfiles in allen drei
Konventionen (Windows, Unix, Mac) lesen. Es gab (gibt?) allerdings
Unterschiede zwischen dem internen Compiler und dem Modul compile.

Ciao,
Martin




More information about the Python-de mailing list