[Python-es] Duda de principiante

Carlos Agulló Calvo cm.agullo en gmail.com
Mar Nov 20 16:43:06 CET 2012


Muchas gracias a todos por vuestra ayuda, seguiré peleándome con mi
programita a ver a qué puerto llego.

Flavio, te agradezco mucho la propuesta, en cuanto tenga tiempo me pongo
con ello, porque mi principal problema para aprender siempre ha sido la
falta de objetivos (no se me ocurría nada para utilizar python).

Ahora estoy con Codecademy, pero es un poco lento y empezando con
projecteuler, que es una buena manera de darle al coco.

Este programa lo necesito para tratar unos datos para mi tesina (trata de
carreteras, pero pensé que python me podría ayudar a clasificar y tratar
los datos y por eso estoy con los meses y las estaciones de conteo de
vehículos), que tengo muchos archivos de meses y con muchas estaciones con
los que pelearme y a mano era una tarea titánica.

Muchas gracias de nuevo y trataré de seguir las recomendaciones de Daπid.


El 20 de noviembre de 2012 16:33, Flavio Danesse <fdanesse en gmail.com>escribió:

> Si quieres aprender jugando, puedes seguir el cursito pygame que tengo
> publicado para mis alumnos:
> https://sites.google.com/site/sugaractivities/home/curso-pygame
>
> PD:
> Yo empecé igual que vos con python.
>
>
>
> El 20 de noviembre de 2012 13:28, Kiko <kikocorreoso en gmail.com> escribió:
>
>> Joder, reescribo un poco el correo porque he puesto alguna cosa mal...
>>
>> El 20 de noviembre de 2012 16:23, Kiko <kikocorreoso en gmail.com> escribió:
>>
>>>
>>>
>>> El 20 de noviembre de 2012 15:41, Carlos Agulló Calvo <
>>> cm.agullo en gmail.com> escribió:
>>>
>>> Hola de nuevo, tengo un par de dudas básicas más (por cierto, si este no
>>>> es el sitio apropiado para mi nivel/poner dudas decidmelo); mi primera duda
>>>> es la siguiente:
>>>
>>>
>>> Este es el sitio apropiado para hablar de python. Si muestras que has
>>> intentado solucionar tu problema, has probado alternativas y que aún así no
>>> te sale la gente será muy amigable y te intentará ayudar. Si pides dudas
>>> que se resuelven googleando de forma sencilla la gente anda muy ocupada
>>> para hacer lo que ya deberías haber hecho tú y no se mostrarán tan
>>> amigables con ese tipo de dudas.
>>>
>>> Otra cosa, no uses el mismo hilo para preguntar dudas nuevas. Intenta
>>> titular la duda de la forma más descriptiva, también procura preguntar una
>>> duda en cada hilo puesto que hace que seguir la lista o buscar cosas sea
>>> más sencillo.
>>>
>>>
>>>>
>>>> me he creado un programita que es el siguiente:
>>>> def abrirmes():
>>>>     mes=open('ABRIL2005.txt','r')
>>>>
>>>> def abrirestacion():
>>>>     est_0303201=open('est_0303201.txt','a')
>>>>
>>>> def leermes():
>>>>     fila=mes.readline()
>>>>
>>>> def escribirestacion():
>>>>     est_0303201.write(fila)
>>>>
>>>> def cerrararchivos():
>>>>     mes.close
>>>>     est_0303201.close
>>>>
>>>>
>>>> abrirmes()
>>>> abrirestacion()
>>>> leermes()
>>>> escribirestacion()
>>>> cerrararchivos()
>>>>
>>>
>> en algunas de esas funciones que creas debes usar *return* para devolver
>> cosas y que otras partes del código puedan acceder. Lo normal es meter eso
>> que devuelves en una variable, por ejemplo:
>>
>> def abrirmes():
>>     mes=open('coords.txt','r')
>>     return mes
>>
>> mes = abrirmes()
>> print mes.readline()
>>
>>
>>>> El problema que me da es que me dice que en *leermes *no está definida
>>>> la variable *mes, *pero a la hora de ejecutar, primero llamo a
>>>> abrirmes y luego a leermes, por lo que debería estar disponible, no?
>>>>
>>>
>> No es el único problema que te dará porque hay más cosas mal.
>>
>>
>>>  si me dejo de vainas y lo hago así:
>>>>
>>>> mes=open('ABRIL2005.txt','r')
>>>>
>>>> est_0303201=open('est_0303201.txt','a')
>>>>
>>>> fila=mes.readline()
>>>>
>>>> est_0303201.write(fila)
>>>>
>>>> mes.close
>>>> est_0303201.close
>>>>
>>>> No me da ningún problema.
>>>>
>>>
>> Esta forma es bastante más natural que lo que estás usando arriba...
>>
>>
>>> Ni otra duda es que las lineas del archivo ABRIL2005.txt tienen la
>>>> siguiente forma:
>>>>
>>>> "0303201";1/4/2005
>>>> 0:01:00;2;0;0;0;0;143;-127;-127;2;0;0;0;-127;2;-127;-127;-127;-127;0
>>>> "0303202";1/4/2005
>>>> 0:01:00;2;0;0;0;0;0;-127;-127;0;0;0;0;-127;0;-127;-127;-127;-127;0
>>>> ...
>>>> y quiero que si el primer código es 0303201 me escriba la línea en el
>>>> archivo est_0303201 y si no, pues que pase de línea;
>>>> lo he intentado de la siguiente manera:
>>>>
>>>> infile=mes.readline()
>>>> for line in infile:
>>>>     if line[1:8]==0303201:
>>>>         archivo_0303201.write(line)
>>>>
>>>> y me da error al leer line[1:8]
>>>>
>>>> cómo podría arreglarlo?
>>>>
>>>> mil gracias por adelantado
>>>>
>>>>
>> Con readline solo lees una línea, con lo que haces estás metiendo toda la
>> línea en la variable infile como una cadena, cuando haces el for sobre la
>> cadena en realidad estás extrayendo cada elemento de la cadena y line no es
>> lo que tú esperas. cambia readline por readline*s* y sigue a partir de
>> ahí.
>>
>> Ya nos vas contando.
>>
>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121120/cc3557bb/attachment.html>


Más información sobre la lista de distribución Python-es