From e7038d302c66e924b3ee7c465e0bb0c2d1d87854 Mon Sep 17 00:00:00 2001 From: Takanuva Date: Sun, 22 Jul 2012 19:44:44 +0200 Subject: [PATCH] =?UTF-8?q?Voila=20marche=20=C3=A0=20partir=20d'un=20fichi?= =?UTF-8?q?er=20csv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- compte_test.csv | 10 +++++----- pralo.py | 43 ++++++++++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 16 deletions(-) mode change 100644 => 100755 pralo.py diff --git a/compte_test.csv b/compte_test.csv index 81a8736..3a4835d 100644 --- a/compte_test.csv +++ b/compte_test.csv @@ -1,5 +1,5 @@ -nom montant -pipo 23 -hiphop 40 -chic 0 -Couette 500 +nom,montant +pipo, 23 +hiphop, 40 +chic, 0 +Couette,50 diff --git a/pralo.py b/pralo.py old mode 100644 new mode 100755 index 907a830..7088ba8 --- a/pralo.py +++ b/pralo.py @@ -1,5 +1,4 @@ -#/usr/bin/env python -#-*- coding:utf-*- +#! /usr/bin/env python # # ------------------------------ @@ -13,6 +12,9 @@ # ------------------------------ # Imports # ------------------------------ +import csv +import os +import optparse # ------------------------------ # Classes @@ -21,9 +23,18 @@ # ------------------------------ # Fonctions # ------------------------------ -def extrait_from_file(file): +def extrait_from_file(file_name): """Extrait les informations à partir d'un fichier""" - pass + file = open(file_name, "r") + try: + reader = csv.reader(file, delimiter = ",") + compte = list(reader) + for i in compte[1:]: + i[1] = int(i[1]) + return compte + finally: + file.close() + def echange(l): """Algo recursif pour gérer les échanges""" @@ -65,15 +76,19 @@ def normalise(compte): """Centre en 0 les comptes""" moyenne = sum([c[1] for c in compte]) / len(compte) compte_normalise = compte + for (i,n) in enumerate(compte): compte_normalise[i][1] = compte[i][1] - moyenne + return compte_normalise + def affiche_final(donRec): """Affiche qui donne quoi à qui à partir de la liste""" for g in donRec: print("{don} donne {montant} à {rec}".format(don = g[0], rec = g[1], montant = g[2])) + def elimine_seuil(liste, seuil): """Elimine les éléments de la liste qui sont sous le seuil """ pass @@ -84,14 +99,20 @@ def elimine_seuil(liste, seuil): # ------------------------------ if __name__ == '__main__': - - # État des comptes - compte = [['bob', 123] , ['pipo', 145] , ['hiphop', 43] , ['dede', 89] , ['chic', 0]] - compte_normalise = normalise(compte) - # print(compte_normalise) + # Pour analyser les options qu'on lui demande + parser = optparse.OptionParser() + # options proposée + parser.add_option("-f","--file",action="store", type = "string", dest="file_name", help="Analyse les comptes à partir du fichier donné en argument") + # Digestion + (options, args) = parser.parse_args() + + if options.file_name: + compte = extrait_from_file(options.file_name)[1:] + print(compte) + compte_normalise = normalise(compte) + final = echange(compte_normalise) + affiche_final(final) - final = echange(compte_normalise) - affiche_final(final) # ------------------------------ # Fin du programme # ------------------------------