[Python-de] readline readlines xreadlines

Stefan Schwarzer sschwarzer at sschwarzer.net
Thu Aug 1 19:26:33 EDT 2002


Hallo Dirk,

Dirk Lannatewitz wrote:
> ich habe ein leichtes Verständnisproblem, und wahrscheinlich mal wieder in
> der Literatur nur drumherum gelesen.
> 
> file sei eine geöffnete Datei.
> 1. file.readline() liest eine Zeile aus der Datei aus.
> 2. file.readlines() liest alle Zeilen aus der Datei aus
> 3. file.xreadlines() liest eine Zeilen aus der Datei aus
> 
> Wo ist der Unterschied zwischen 1 und 3?

1. liest genau eine Zeile - oder weniger, wenn ein Argument angegeben wird, - aber
nicht mehr.

Beispiel: Die Datei enthalte "Zeile 1\nZeile 2\nZeile 3", wobei \n ein
Zeilenendezeichen ist.

f = open('filename', 'r')   # 'r' ist Standardvorgabe
line = f.readline(3)  # "Zei"
line = f.readline()   # "le 1\n"
line = f.readline()   # "Zeile 2\n"
f.close()

2. liest alle (restlichen) Zeilen in eine Liste:

f = open('filename', 'r')
lines = f.readlines()   # ["Zeile 1\n", "Zeile 2\n", "Zeile 3\n"]
f.close()

3. liest alle Zeilen - und ist damit readlines ähnlicher als readline. Der Unter-
schied zu readlines besteht darin, dass xreadlines einen Iterator verwendet. Dadurch
wird die nächste Zeile nur gelesen, wenn sie tatsächlich "angefordert" wird. Dieser
Unterschied kommt nur(?) bei for-Schleifen zum Tragen.

for line in readlines():
     # tu etwas mit line

liest alle Zeilen auf einmal und fängt dann an, die entstandene Liste abzuarbeiten.
Dagegen wird mit

for line in xreadlines():
     # tu etwas mit line

pro Schleifendurchlauf nur eine Zeile gelesen. Das spart RAM-Speicher (es sei
denn, die Datei besteht nur aus einer Zeile ;-) ).

Viele Grüße
  Stefan




More information about the Python-de mailing list