Fwd: Re: [Python-de] while(!eof) in Python??

Stefan Schwarzer s.schwarzer at ndh.net
Fri Apr 26 21:23:35 EDT 2002


Hallo,

das sollte eigentlich an die Liste gehen und nicht allein an Erhan.
Sorry für die Verspätung. ;-)

Tschaui
 Stefan

-------- Original Message --------
Subject: Re: [Python-de] while(!eof) in Python??
Date: Thu, 25 Apr 2002 16:44:51 +0200
From: Stefan Schwarzer <s.schwarzer at ndh.net>
To: Erhan_A at gmx.de

Hallo Erhan,

Erhan_A at gmx.de wrote:
> mal ne ganz "dumme" Python-Anfängerfrage:
> wie kann ich in Python, die in anderen Sprachen bekannte
> while(!eof)-Schleife, darstellen.Muss ich dafür eine Funktion "basteln" oder
> gibt es dafür  eine Python-Darstellung.

eine "1:1-Übersetzung" ist diese:

fo = open(filename, 'r')
while 1:
    line = fo.readline()
    if not line:
        break
    ...
fo.close()

Hintergrund: Wenn das Dateiende erreicht ist, enthält line nur einen
leeren String, der als "falsch" gewertet wird. Mit der Dateimethode read
funktioniert es ebenso.

Oft brauchst du aber gar keinen expliziten Test:

fo = open(filename, 'r')
for line in fo.xreadlines():
    ...
fo.close()

Die xreadlines-Methode hört automatisch auf zu lesen, wenn es nichts
mehr zu lesen gibt. (Genauer gesagt, erzeugt die xreadlines-Methode ein
xreadlines-Objekt, über das dann iteriert wird.) Wenn du aus irgendwelchen
Gründen alle Zeilen in den Speicher lesen willst, kannst du readlines()
verwenden (dann aber normalerweise nicht in der for-Schleife).

Ab Python 2.2 lässt sich die obige Schleife sogar einfach schreiben als

fo = open(filename, 'r')
for line in fo:
    ...
fo.close()

Das ist sehr hübsch zu lesen, wird aber in früheren Python-Versionen als
2.2 nicht laufen.

Stefan



More information about the Python-de mailing list