[Python-es] error bucle for
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
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 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/