1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| # usr/bin/python
import csv
global dico, listeEspeces, coefSeuil, dico2
dico = {}
dico2 = {}
listeEspeces = []
coefSeuil = 0.95
def listeEspeceDico(ligne):
"""traitement des lignes transmises en entrée"""
for e in ligne[2].split(' - '):
if e not in listeEspeces: #si l'espèce rencontrée n'est pas déjà dans la liste, on l'ajoute
listeEspeces.append(e)
dico[ligne[1]] = len(listeEspeces) #création d'un dico contenant une date et une espèce observée
return dico
###Main###
with open('filetest.csv', 'r') as f: #ouverture et lecture du fichier source
lecture = csv.reader(f, delimiter=',')
communeActuelle = ''
for ligne in lecture: #lecture de la commune contenue dans la présente ligne
nouvelleCommune = ligne[0]
if communeActuelle == '':
communeActuelle = nouvelleCommune
if communeActuelle == nouvelleCommune: #bouclage si la commune est toujours la même
listeEspeceDico(ligne)
continue
else: #tout foire à partir de ce bloc
nbJr = 0
for cle in dico: #on recherche la date à partir de laquelle
nbJr += 1 #on a observé 95% des especes
if dico[cle] >= coefSeuil*len(listeEspeces):
dico2['commune'] = communeActuelle #puis on crée un dico contenant
dico2['nbJrSeuil'] = nbJr #commune et nb de jour d'observation
with open('sortie.csv', 'a', encoding = 'utf-8') as f: #Ouverture du fichier destination
fieldnames = ['commune', 'nbJrSeuil']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writerow(dico2) #écriture des infos de dico2 dans le csv
dico = {} #remise à 0 des variables pour un nouveau tour de boucle
listeEspeces = []
communeActuelle = nouvelleCommune #on précise au programme qu'on change de commune
listeEspeceDico(ligne) |
Partager