2010-10-14 6 views

Répondre

17

J'imagine que c'est avant que les fichiers étaient des itérateurs et est maintenu pour la rétrocompatibilité. Même pour un one-liner, est totalement assez redondant car list(fh) fera la même chose d'une manière plus intuitive. Cela vous donne aussi la liberté de faire set(fh), tuple(fh), etc.

Voir gnibbler's answer.

+0

+1 Bon point sur 'collection_constructor (fh)'. Je dois admettre que cela ne m'est jamais arrivé. – delnan

+0

Quand je commençais avec Python, j'avais l'habitude de 'list (fh)' avant de réaliser que c'était redondant. Êtes-vous sûr que c'est pour la rétrocompatibilité? Je veux dire qu'ils ont cassé beaucoup de choses avec Python 3, alors pourquoi ne pas nettoyer ça aussi! –

+0

@Ashish, Ils n'ont vraiment pas cassé autant et non je ne suis pas sûr que ce soit pour la rétrocompatibilité. J'ai commencé à programmer Python alors que 2.6 n'était pas assez récent, donc je suis un peu un noob. Je n'ai même jamais écrit de code pour 2.5 par exemple, donc je ne connais pas du tout l'histoire. – aaronasterling

1

readlines()readlines() renvoie une liste de lignes, que vous pouvez souhaiter si vous ne prévoyez pas d'itérer sur chaque ligne.

+2

'list (fh)' fera de même. –

+0

@Ashish: 'readlines ([size])' prend un argument optionnel. – MattH

+1

@MattH, notez que la taille est un indice, et que plus ou moins de lignes peuvent être retournées –

16

Principalement, il est là pour la rétrocompatibilité. readlines était là avant que les objets de fichiers soient itérables

L'utilisation de readlines avec l'argument size est également l'un des moyens les plus rapides pour lire des fichiers car il lit un tas de données en un seul hit, mais n'a pas besoin d'allouer de la mémoire pour le fichier entier tout à la fois

Questions connexes