Quand dois-je toujours utiliser le fichier.read() ou d'un fichier.readlines()?

J'ai remarqué que si je itérer sur un fichier que j'ai ouvert, il est beaucoup plus rapide pour parcourir sans "lu"-ing.

c'est à dire

l = open('file','r')
for line in l:
    pass (or code)

est beaucoup plus rapide que

l = open('file','r')
for line in l.read() / l.readlines():
    pass (or code)

La 2ème boucle prendra environ 1,5 x plus de temps (j'ai utilisé timeit sur exactement le même fichier, et les résultats ont été 0.442 vs 0.660), et donnerait le même résultat.

Alors - quand dois-je toujours utiliser le .read() ou .readlines()?

Depuis, j'ai toujours besoin d'itérer sur le fichier que je suis en train de lire, et après le difficile apprentissage de la manière lente et douloureuse .read() peut être gros - je n'arrive pas à imaginer de l'utiliser à nouveau.

Veuillez préciser. est le timeit mesure pour read, ou pour readlines? Je m'attends à de la read boucle à prendre plus de temps parce qu'il renvoie une chaîne unique, une itération sur elle irait caractère par caractère. Si votre fichier est en moyenne de 100 caractères par ligne, puis le code de la for line in l.read() boucle exécute une centaine de fois, autant de fois que le code de la for line in l: boucle.
c'est aussi pour readlines(). Étonnamment il n'y a presque pas de différence de temps entre read() ou readlines()...

OriginalL'auteur David Refaeli | 2016-06-29