Me gusta gusta mucho programar en Python porque es muy ágil a la hora de hacer prototipos y tiene un gran cantidad de herramientas. Una de las que he tenido que utilizar hace poco por temas de trabajo es el tratamiento de ficheros CSV.
Se trata de realizar una baremación de una lista de centros educativos que tengo en CSV y, como la hoja de cálculo no me acaba de convencer mucho, he hecho un pequeño scritp en Python que me ha resuelto la papeleta.
Se trata de asignar una puntuación a cada centro educativo dependiendo del número de docentes que aporte a un proyecto (en cada fila tenemos a cada centro con sus docentes). Se sumará un punto por docente y tres puntos si en la lista hay docentes de dos especialidades distintas. Los archivos de salida con a su vez dos .csv: uno con la lista de centros y su baremación y otra con la lista de docentes.
Bueno, aquí pongo el programa como ejemplo de uso efectivo de la clase csv de Python:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import csv
centros = open('listadocentros.csv', 'a')
docentes = open('listadodocentes.csv', 'a')
writeCentros = csv.writer(centros)
writeDocentes = csv.writer(docentes)
fuente = open('in.csv','rb')
writeCentros.writerow( ('Id', 'Código Centro', 'Centro','Docentes aportados','Baremo') )
writeDocentes.writerow( ('COD.CENTRO', 'CENTRO','NIF', 'NOMBRE', 'APELLIDO1','APELLIDO2','ESPECIALIDAD') )
nOrLastField = 112 # numero de orden del ultimo campo
baremo = 0
c1 = 0 #criterio 1 de la convocatoria
c2 = 0 #criterio 2 de la convocatoria
c4 = 0 #criterio 4 de la convocatoria
try:
reader = csv.reader(fuente)
for index, row in enumerate(reader):
k = 19
baremo = 0
tec = []
epv = []
codIes = row[2]
ies = row[3]
while k <= nOrLastField:
if row[k] == "Sí":
if row[k + 1] == "Sí":
tec.append(True)
especialidad = "Tecnologías"
elif row[k + 2] == "Sí":
epv.append(True)
especialidad = "EPV"
writeDocentes.writerow( (codIes, ies, row[k - 6], row[k - 5], row[k - 4],row[k - 3] ,especialidad) )
k = k + 10
if (True in tec and True in epv): #Si hay docentes de plastica y tecnologias
c4 = 3
else:
c4 = 0
baremo = len(tec) + len(epv) + c4
if len(tec) <> 0 or len(epv) <> 0:
writeCentros.writerow( (row[0], row[2], row[3], str(len(tec) + len(epv)), str (baremo)) )
print "Centro: ", row[0], row[2], row[3], str (baremo) + " " + "docentes aportados: ", str(len(tec) + len(epv))
finally:
fuente.close()
centros.close()
docentes.close()
PD. cada vez que se pruebe conviene vaciar de datos los archivos generados, esto se puede hace (desde la consola de gnu/linux por su puesto) con $cat /dev/null > archivo.csv
Otra cosa: Cuidado con las tabulaciones al cortar y pegar código.
Mostrando entradas con la etiqueta programs. Mostrar todas las entradas
Mostrando entradas con la etiqueta programs. Mostrar todas las entradas
domingo, enero 26, 2014
domingo, diciembre 30, 2012
Apoya a la Free Software Foundation
Como suele ser habitual por estas fechas la Free Software Foundation suele montar una campaña para recaudar fondos para financiarse. Uno de los objetivos del año que viene (2013) es conseguir parar el proyectos como el "Restricted Boot" de Microsoft que pretende llegar a un acuerdo con los fabricantes de hardware para que diseñen BIOS que no permitan la instalación de otro sistema operativo que no se el Windows 8 para salvaguardar, según ellos, la seguridad de los equipos. O sea que si no es suficiente que al comprar un ordenador te obliguen a pagar la licencia de MS-Windows, ahora te será imposible instalar otro sistema operativo. Además parece que este asunto se va a hacer extensivo a tablets y móviles. Un asco, vamos.
Si hay una organización con peso y legitimidad suficiente para hacer ruido mediático en contra de abusos de los lobbies tecnológicos ésta es la Fundación por el Software Libre (www.fsf.org), pero obviamente, como cualquier organización sin ánimo de lucro depende de las donaciones de empresas y particulares así es que, si puedes aportar algo de dinero o directamente hacerte socio, colaborarás por una buena causa en pro de la libertad de uso de los medios tecnológicos. Como se puede ver en su web, además de la mencionada campaña "Stop restricted boot" y muchas otras, la FSF mantiene los repositorios de todo el software GNU. Gracias a ellos podemos disfrutar de multitud de utilísimos programas. Algunos ya los estás usando sin darte cuenta cuando te conectas a internet, están en tu router y servidores en la nube que te dan servicio usando programas libres GNU. Además la FSF es el garante del cumplimiento de la licencia libre GPL v3 evitando que se cometan abusos y que nadie se apropie de forma indebida de la autoría del software libre.
En fin, si puedes echar un cable a la causa del software libre contribuirás a construir un mundo mejor.
Si hay una organización con peso y legitimidad suficiente para hacer ruido mediático en contra de abusos de los lobbies tecnológicos ésta es la Fundación por el Software Libre (www.fsf.org), pero obviamente, como cualquier organización sin ánimo de lucro depende de las donaciones de empresas y particulares así es que, si puedes aportar algo de dinero o directamente hacerte socio, colaborarás por una buena causa en pro de la libertad de uso de los medios tecnológicos. Como se puede ver en su web, además de la mencionada campaña "Stop restricted boot" y muchas otras, la FSF mantiene los repositorios de todo el software GNU. Gracias a ellos podemos disfrutar de multitud de utilísimos programas. Algunos ya los estás usando sin darte cuenta cuando te conectas a internet, están en tu router y servidores en la nube que te dan servicio usando programas libres GNU. Además la FSF es el garante del cumplimiento de la licencia libre GPL v3 evitando que se cometan abusos y que nadie se apropie de forma indebida de la autoría del software libre.
En fin, si puedes echar un cable a la causa del software libre contribuirás a construir un mundo mejor.
Suscribirse a:
Entradas (Atom)
