IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Chargement dictionnaire à partir d'un ficher csv dans un programme serveur


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 130
    Par défaut Chargement dictionnaire à partir d'un ficher csv dans un programme serveur
    Bonjour

    La séquence suivante qui fonctionne parfaitement dans un programme classique ne répond plus correctement
    lorsqu'elle est transposée dans le serveur

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if request_decode != "palmares":
                sportifs = dict()
                import csv
                from collections import defaultdict
                sportifs = defaultdict(list)
                with open(chemin_tot, 'r') as csv_file:
                    csv_reader = csv.DictReader(csv_file)
                    for line in csv_reader:
                        for key, value in line.items():
                            sportifs[key].append(value)
                    print("j'imprime le dictionnaire")
                    print(sportifs)
                print("request_decode =", request_decode)
                value = sportifs.get(request_decode)
                print("value = ", value)

    Voici un résultat d'un test avec les messages

    j'imprime le dictionnaire

    defaultdict(<class 'list'>, {'DUPONT;Antoine 15/11/1996 Rugbyman Stade Toulousain': ['HASTOY;Antoine 04/06/1997 Rugbyman Section Paloise', 'NTAMACK;Romain 01/05/1999 Rugbyman Stade Toulousain', 'MBAPPE;Kilian 01/01/1999 Footballeur Paris PSG']})

    request_decode = DUPONT

    value = None

    Comme déjà précisé, la même séquence, avec le même dictionnaire, dans un programme autre que serveur donne les résultats escomptés
    Je précise bien que ces instructions conditionnées par un "if" ne l'ont été que pour les besoins du test.

    Je remercie par avance ceux qui s'intéresseront à mon problème

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Si vous utilisez un dictreader, il faut que le fichier CSV ait une première ligne donnant le nom des colonnes (ou les préciser à l'appel).
    Dans tous les cas, le séparateur des colonnes d'un fichier CSV doit être précisé si ce n'est pas la valeur par défaut (', ').

    Citation Envoyé par tom31
    Comme déjà précisé, la même séquence, avec le même dictionnaire, dans un programme autre que serveur donne les résultats escomptés
    Votre programme triture des données et ça va marcher si elles sont dans un format donné. Si le format "bouge", çà va faire des choses bizarres.... Et regarder le contenu du fichier ou la documentation du module CSV n'est pas une option lorsqu'on programme ce genre de chose.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 130
    Par défaut [Python 3.X] Chargement dictionnaire à partir d'un ficher csv dans un programme serveur
    Bonsoir

    Je vous remercie de vous être intéressé à mon problème
    Mais ...
    J'ai tenté toutes les possibilités à partir de ce que vous m'avez indiqué sans succès

    J'ai testé un nouveau ce nouveau script qui fonctionne hors serveur

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     if request_decode != "palmares":
               sportifs = dict()
                import csv
                reader = csv.reader(open(chemin_tot))
     
     
            for row in reader:
                key = row[0]
                if key in sportifs:
            # implement your duplicate row handling here
                    pass
                sportifs[key] = row[1:]
                print(sportifs)
                value = sportifs.get(request_decode)
                print("value = ", value)

    Value est toujours égal à None

    En ce qui me concerne et comme déjà dit le mystère vient du fait que la séquence donne les résultats escomptés hors programme serveur

    Une nouvelle fois... Merci par avance de votre intérêt pour mon problème

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 227
    Par défaut
    hello,
    peux-tu nous faire voir les deux premières lignes de ton csv ?
    Ami calmant, J.P

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 130
    Par défaut Chargement dictionnaire à partir d'un ficher csv dans un programme serveur
    Bonjour

    Voici les premières lignes du csv

    NOM;ETAT CIVIL
    DUPONT;Antoine 15/11/1996 Rugbyman Stade Toulousain
    HASTOY;Antoine 04/06/1997 Rugbyman Section Paloise
    NTAMACK;Romain 01/05/1999 Rugbyman Stade Toulousain
    MBAPPE;Kilian 01/01/1999 Footballeur Paris PSG

    Merci
    cordialement

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 227
    Par défaut
    on voit dans ton premier message que le dictionnaire n'est pas bon. Comme le disait wiztricks, il faut préciser que le délimiteur est ; . Dans ton deuxième il y a un problème d'indentation : tu imprimes les résultats dans la boucle de génération du dictionnaire. Voici un code qui fonctionne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import csv
    sportifs = dict()
    reader = csv.reader(open('d:/temp/sportifs.csv'),delimiter=';')
    for row in reader:
        key = row[0]
        if key in sportifs:
            # implement your duplicate row handling here
            pass
        sportifs[key] = row[1:]
    print(sportifs)
    value = sportifs.get('DUPONT')
    print("value = ", value)
    et le résultat :

    {'NOM': ['ETAT CIVIL'], 'DUPONT': ['Antoine 15/11/1996 Rugbyman Stade Toulousain'], 'HASTOY': ['Antoine 04/06/1997 Rugbyman Section Paloise'], 'NTAMACK': ['Romain 01/05/1999 Rugbyman Stade Toulousain'], 'MBAPPE': ['Kilian 01/01/1999 Footballeur Paris PSG']}
    value = ['Antoine 15/11/1996 Rugbyman Stade Toulousain']

Discussions similaires

  1. Lecture d'un fichier csv dans un programme VB.net
    Par Ashrani dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/06/2020, 18h47
  2. Intégrer un fichier CSV dans mon programme
    Par houmad91 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 19/03/2013, 15h58
  3. Réponses: 6
    Dernier message: 25/01/2013, 16h45
  4. Réponses: 2
    Dernier message: 19/03/2008, 14h51
  5. Utiliser un ficher texte dans un programme
    Par smow86 dans le forum Pascal
    Réponses: 4
    Dernier message: 09/05/2007, 20h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo