2010-10-14 11 views

Respuesta

17

Me imagino que es antes de que los archivos fueran iteradores y se mantiene para la compatibilidad con versiones anteriores. Incluso para un one-liner, es totalmente bastante redundante como list(fh) hará lo mismo de una manera más intuitiva. Eso también le da la libertad de hacer set(fh), tuple(fh), etc.

Ver gnibbler's answer.

+0

+1 Buen punto en 'collection_constructor (fh)'. Debo admitir que nunca se me ocurrió. – delnan

+0

Cuando comencé con Python solía 'list (fh)' antes de darme cuenta de que era redundante. ¿Estás seguro de que es compatible con versiones anteriores? Quiero decir que rompieron mucho con Python 3, ¿por qué no limpiar esto también? –

+0

@Ashish, Realmente no rompieron tanto y no, no estoy seguro de que sea compatible con versiones anteriores. Empecé a programar Python cuando 2.6 no era bastante nuevo, así que soy algo novato. Ni siquiera he escrito código para 2.5 por ejemplo, así que no conozco la historia en absoluto. – aaronasterling

1

readlines() devuelve una lista de líneas, que puede desear si no planea iterar a través de cada línea.

+2

'list (fh)' hará lo mismo. –

+0

@Ashish: 'readlines ([size])' toma un argumento opcional. – MattH

+1

@MattH, tenga en cuenta que el tamaño es una pista, y se pueden devolver más o menos líneas –

16

Principalmente está ahí para compatibilidad con versiones anteriores. readlines estaba allí antes de que los objetos de archivo fueran iterables

Usar readlines con el argumento de tamaño es también una de las formas más rápidas de leer archivos porque lee un montón de datos en un hit, pero no necesita asignar memoria para el archivo completo de una vez

Cuestiones relacionadas