Une boucle dans un fichier texte, readline() de la construction échoue sur des fichiers volumineux
En Python 2.6 et 2.7, j'aurais pensé que ces deux constructions identiques:
Méthode Un
i=0
f=open('fred.txt','r')
for line in f.readline():
i+=1
print i
Méthode B
i=0
f=open('fred.txt','r')
for line in f:
i+=1
print i
Toutefois, lorsque fred.txt a grandi pour être de 74 000 lignes, chaque ligne 2,684 caractères, Méthode Un imprime 2685 tout Méthode B imprime 74000. De toute évidence, la Méthode B est préféré, mais pourquoi la Méthode de travail pour les petits fichiers, mais ne parviennent pas pour les gros fichiers?
OriginalL'auteur WombatPM | 2010-12-31
Vous devez vous connecter pour publier un commentaire.
Il y a une faute de frappe, il doit être
f.readlines()
. Vous êtes en train de lire une ligne et en parcourant chaque caractère de la ligne.Les deux méthodes (
readlines
vs itération sur le fichier directement) devrait donner les mêmes résultats, maisreadlines
va stocker tout le contenu de la mémoire.Donc, pour être clair, une itération sur le fichier (PAS readlines()) ne fera que provoquer une ligne à la fois pour être lu? Mon fichier est de 26 GO > 12 Go de mémoire...
Correct.
OriginalL'auteur Josh Lee