lunes, mayo 04, 2009

4 en 1

No es el juego, sino que tenia estas 4 lineas de código Python:
fh = open('datos.txt','w')
for x in h_set:
fh.write('%s\n'%x)
fh.close()
Y las converti en una sola:

open('datos.txt','w').write(('%s\n'%x for x in h_set))

h_set es un set, pero puede ser un iterable cualquiera para el caso.
¿Que tal?

Etiquetas: ,

3 Comentarios:

A la/s 10:04 p. m., Blogger Roberto Alsina dijo...

Este... en el segundo caso dejás abierto el filehandle.

Si la aplicacion muere inesperadamente, en ambs casos no garantizás escritura de los datos (pero en el segundo es peor).

 
A la/s 10:34 p. m., Blogger Sebastian dijo...

En el caso de 1 linea, no queda abierto, porque como no tiene nombre el filehandle, el garbage collector lo limpia. ¿o no?

Estoy pensando otra manera, pero no se si realmente es mas segura:

with open('datos.txt','w') as fh:
fh.write(('%s\n'%x for x in h_set))

 
A la/s 3:22 p. m., Blogger Gonzalo dijo...

El caso de "with" es igual de seguro que el código de 4 lineas. Me hace ruido que el garbage collector se encargue de destruir el handle, no creo que sea asi pero no me estoy basando en nada escrito, es solo una suposición.

Respecto al with, al tener los métodos __enter__ y __exit__ la clase file, cuando salgas del with se va a encargar de matar el filehandle :)

Slds!

 

Publicar un comentario

Suscribirse a Comentarios de la entrada [Atom]

<< Página Principal