[Python-es] error bucle for

2012-11-22 Por tema Carlos Agulló Calvo
he creado el siguiente programita:

mes_entrada=raw_input ('Escribe un mes de entrada:')

mes=open(mes_entrada,'r')

lista_estaciones=[]


for line in mes:
if line[1:8] in lista_estaciones:
pass
else:
lista_estaciones.append(line[1:8])


for i in lista_estaciones:
num_est=str(i)
nombre_estacion='est_'  + num_est + '.txt'
archivo_estacion=open(nombre_estacion,'a')

   * for line in mes:*
*print num_est*
*if line [1:8]==num_est:*
*archivo_estacion.write(line)*
*else:*
*pass*
*archivo_estacion.close*

mes.close

y el segundo bucle me falla, puesto que le digo que para cada linea del
archivo *mes *me mire los caracteres del 2 al 8 y si es igual al num_est me
lo escriba en el archivo_estacion; pero los archivos *est_XXX.txt* que me
crea se me quedan vacíos.

Como se ve, he metido un *print num_est* dentro del bucle para que me
apareciera en pantalla algo, pero no me aparece en la pantalla nada de nada
¿sabéis por qué?


Muchas gracias
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] error bucle for

2012-11-22 Por tema Antonio Mas
Creo que al recorrer el fichero en el primer bucle dejas el índice al 
final del fichero y por eso en el segundo bucle no entras.


Habría que hacer un seek(0) en mes


Que me corrijan los que manejan que yo estoy en cinturón blanco/amarillo 
todavía de python.



Saludos
Toni


On 22/11/12 13:24, Carlos Agulló Calvo wrote:

he creado el siguiente programita:

mes_entrada=raw_input ('Escribe un mes de entrada:')

mes=open(mes_entrada,'r')

lista_estaciones=[]


for line in mes:
if line[1:8] in lista_estaciones:
pass
else:
lista_estaciones.append(line[1:8])


for i in lista_estaciones:
num_est=str(i)
nombre_estacion='est_'  + num_est + '.txt'
archivo_estacion=open(nombre_estacion,'a')

*for line in mes:*
*print num_est*
*if line [1:8]==num_est:*
*archivo_estacion.write(line)*
*else:*
*pass*
*archivo_estacion.close*

mes.close

y el segundo bucle me falla, puesto que le digo que para cada linea 
del archivo *mes *me mire los caracteres del 2 al 8 y si es igual al 
num_est me lo escriba en el archivo_estacion; pero los archivos 
*est_XXX.txt* que me crea se me quedan vacíos.


Como se ve, he metido un *print num_est* dentro del bucle para que me 
apareciera en pantalla algo, pero no me aparece en la pantalla nada de 
nada ¿sabéis por qué?



Muchas gracias






___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] error bucle for

2012-11-22 Por tema Carlos Zuniga
2012/11/22 Carlos Agulló Calvo cm.agu...@gmail.com:
 he creado el siguiente programita:

 mes_entrada=raw_input ('Escribe un mes de entrada:')

 mes=open(mes_entrada,'r')

 lista_estaciones=[]


 for line in mes:
 if line[1:8] in lista_estaciones:
 pass
 else:
 lista_estaciones.append(line[1:8])


 for i in lista_estaciones:
 num_est=str(i)
 nombre_estacion='est_'  + num_est + '.txt'
 archivo_estacion=open(nombre_estacion,'a')

 for line in mes:
 print num_est
 if line [1:8]==num_est:
 archivo_estacion.write(line)
 else:
 pass
 archivo_estacion.close

 mes.close

 y el segundo bucle me falla, puesto que le digo que para cada linea del
 archivo mes me mire los caracteres del 2 al 8 y si es igual al num_est me lo
 escriba en el archivo_estacion; pero los archivos est_XXX.txt que me crea se
 me quedan vacíos.

 Como se ve, he metido un print num_est dentro del bucle para que me
 apareciera en pantalla algo, pero no me aparece en la pantalla nada de nada
 ¿sabéis por qué?


Como dice Antonio, estas al final del archivo así que el segundo bucle
no contiene nada sobre que iterar. Añade mes.seek(0) antes del segundo
bucle.

A parte quería añadir que close es un método, por lo que deberías usar
mes.close(), y mucho mejor practica, usar with:

with open(archivo, 'r') as mes:
for line in mes:
...

Con with te olvidas de tener que cerrar el archivo ya que python lo hace por tí.

Saludos
-- 
A menudo unas pocas horas de Prueba y error podrán ahorrarte minutos
de leer manuales.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/