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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 41
    Points
    41
    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 sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    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 du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 41
    Points
    41
    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 éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    peux-tu nous faire voir les deux premières lignes de ton csv ?
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 41
    Points
    41
    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 éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    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']
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 41
    Points
    41
    Par défaut [Python 3.X] Chargement dictionnaire à partir d'un ficher csv dans un programme serveur
    Re-Bonjour et re-merci

    J'ai appliqué la séquence comme indiquée
    Je l'ai testée sur un programme hors serveur aucun problème tout est OK
    Sur le serveur l'anomalie subsiste

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     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)
                print("request_decode =",request_decode)
                value = sportifs.get(request_decode)
                print("value = ", value)


    Voici la liste des 'print'

    {'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': []}
    request_decode = DUPONT
    value = None

    Encore merci

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 41
    Points
    41
    Par défaut Python 3.X] Chargement dictionnaire à partir d'un ficher csv dans un programme serveur
    Bonjour et merci

    Élément nouveau dont je m'aperçois

    Malgré une séquence absolument identique appliquée au même fichier csv le dictionnaire est chargé différemment entre un programme serveur et un programme non serveur

    Programme non serveur ou le résultat de l'interrogation d'une clé est correcte

    {'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']}

    Programme serveur ou l'interrogation de la même clé renvoie NONE

    {'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 pour votre collaboration et si d'aucun peut m'apporter une je lui en serais très reconnaissant

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Question essentielle :
    Qu'appelles-tu programme serveur ? même config python que le programme non serveur ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par tom31 Voir le message
    Merci pour votre collaboration et si d'aucun peut m'apporter une je lui en serais très reconnaissant
    On vous explique de vous inquiéter du délimiteur, on vous donne même un exemple qui l'utilise... tout çà pour que vous n'en teniez pas compte et reproduisiez les mêmes erreurs.

    Il faut savoir un minimum programmer pour demander de l'aide.

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

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