Je veux lire énorme fichier texte ligne par ligne (et arrêter si une ligne avec "str" trouvé). Comment vérifier si la fin du fichier est atteinte?
fn = 't.log'
f = open(fn, 'r')
while not _is_eof(f): ## how to check that end is reached?
s = f.readline()
print s
if "str" in s: break
Il n'est pas nécessaire de vérifier EOF en python, il suffit de faire:
with open('t.ini') as f:
for line in f:
print line
if 'str' in line:
break
Il est recommandé d’utiliser le mot clé
with
lorsqu’il s’agit d’objets fichier. Cela a l'avantage que le fichier est correctement fermé à la fin de la suite, même si une exception est déclenchée.
Il suffit de parcourir chaque ligne du fichier. Python vérifie automatiquement la fin du fichier et le ferme pour vous (à l'aide de la syntaxe with
.).
with open('fileName', 'r') as f:
for line in f:
if 'str' in line:
break
Il existe des situations où vous ne pouvez pas utiliser la structure (très convaincante) with... for...
. Dans ce cas, procédez comme suit:
line = self.fo.readline()
if len(line) != 0:
if 'str' in line:
break
Cela fonctionnera car la readline()
laisse un caractère de fin de ligne, où EOF est simplement une chaîne vide.