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

Gerhard Häring haering_python at gmx.de
Thu Apr 25 21:08:10 EDT 2002


* Erhan_A at gmx.de <Erhan_A at gmx.de> [2002-04-25 10:25 +0200]:
> Hallo zusammen,
> 
> 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.

Textdateien will man normalerweise zeilenweise einlesen. Das macht man,
indem man über das file-Objekt iteriert:

for line in open("textfile"):
    # mach ich so gut wie immer: schneidet whitespace, insbes. newlines
    # ab:
    line = rstrip(line) 
    ...

Das ist Syntax, die ab Python 2.2 dazukam, aber was älteres will man eh
nicht verwenden (und wenn doch, sind die xreadlines und
readlines-Methoden des file-Objektes angesagt).

Willst du aber mit Binärdateien hantieren (die man unter Windows
tunlichst mit den Flags "rb", nicht nur "r" öffnen sollte), dann liest
man normalerweise blockweise ein. Eine gebräuchliche Variante dafür
wäre:

f = open("filename", "rb")
BLOCKSIZE = 1024
block = f.read(BLOCKSIZE)
while block:
    # mach irgendwas mit dem String 'block'
    block = f.read(BLOCKSIZE)

Der Grund, warum "while block" funktioniert, ist dass bei EOF ein leerer
String zurückgeliefert wird.

Gerhard
-- 
This sig powered by Python!
Außentemperatur in München: 13.1 °C      Wind: 3.1 m/s



More information about the Python-de mailing list