web-dev-qa-db-fra.com

Python: lit toutes les lignes d'un fichier texte en boucle

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
45
Prog1020

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

Pourquoi l'instruction with :

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.

101
Ashwini Chaudhary

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
8
Sukrit Kalra

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.

3
Damian Vogel