Par exemple, les fichiers, en Python, sont itérables - ils itèrent sur les lignes du fichier. Je veux compter le nombre de lignes.
Voici un moyen rapide d'y parvenir :
lines = len(list(open(fname)))
Cependant, cette opération charge tout le fichier en mémoire (en une seule fois). Cela va à l'encontre de l'objectif d'un itérateur (qui ne doit conserver que la ligne courante en mémoire).
Cela ne fonctionne pas :
lines = len(line for line in open(fname))
car les générateurs n'ont pas de longueur.
Existe-t-il un moyen d'y parvenir sans définir une fonction de comptage ?
def count(i):
c = 0
for el in i: c += 1
return c
Pour clarifier, je comprends que le fichier entier devra être lu ! C'est juste que je ne veux pas qu'il soit en mémoire en une seule fois.