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 :

problème boucle FOR et/ou dictionnaire [Windows 7] [Python 3.X]


Sujet :

Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de FolDeDol
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2013
    Messages : 32
    Par défaut problème boucle FOR et/ou dictionnaire [Windows 7]
    Bonjour à toutes et à tous,

    Je rencontre depuis quelques jours un problème avec une boucle FOR, enfin je suppose...

    J'ai une fonction qui va lire des fichiers stockés dans un répertoire et inscrire différentes données (nom, taille du fichier, nom de la société...) dans un dictionnaire (dico).
    Selon le type de fichier, le "parsage" va s'effectuer soit sur les 2 premiers caractères soit sur les 11 premiers caractères. Une comparaison avec une dictionnaire (société) me permet de déterminer le nom de la société. Jusqu'ici le script fonctionne correctement.

    En revanche, lorsque j'essaye d'ajouter le type d'équipement dans le dictionnaire (dico), le type d'équipement s'inscrit correctement mais les données des sociétés débloquent complétement. Je me base sur la même méthode que précédemment, à savoir un dictionnaire (equipement) auquel je vais me référer pour déterminer l'équipement.

    J'arrive à obtenir dans le dictionnaire soit le nom de la société soit le type d'équipement mais jamais les 2 ensemble.

    J'ai l'impression que le problème vient de la boule FOR qui à un moment ne s'initialise plus... Bref, je bloque.

    Pouvez-vous m'éclairer à ce sujet.

    Je joins en fichier ZIP le jeu de données et le code source ci-dessous.

    Cordialement,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    52
     
    import os
    import sys
     
    chemin_destination = 'C:/Users/Berty/Desktop/Berty/P.Y.M/Erreurs Stats/Destination/'
    os.chdir(chemin_destination)
     
    def retraitement():
     
    # Création d'un dictionnaire pour recevoir le flux des données.
        dico = {}
     
     
    # Déclaration d'un dictionnaire permettant de relier la statistique au nom
    # de la société.
     
        societe = {"67" : "SOCIETE 1", "0K" : "SOCIETE 2", "6N" : "SOCIETE 3",\
        "6Q" : "SOCIETE 4", "6K" : "SOCIETE 5","66" : "SOCIETE 6", "70" : "SOCIETE 7",\
        "72" : "SOCIETE 8", "6M" : "SOCIETE 9","6U" : "SOCIETE 10", "6O" : "SOCIETE 11",\
        "6Z" : "SOCIETE 12", "6R" : "SOCIETE 13", "6L" : "SOCIETE 14", "6T" : "SOCIETE 15",\
        "6P" : "SOCIETE 16", "factures_06" : "SOCIETE 8","factures_10" : "SOCIETE 8",\
        "factures_07" : "SOCIETE 7", "factures_08" : "SOCIETE 7", "factures_09" : "SOCIETE 7",\
        "factures_04" : "SOCIETE 2", "factures_03" : "SOCIETE 2", "" : "INCONNU"}
     
    # Déclaration d'un dictionnaire permettant de relier la statistique 
    # à l'équipement.
        equipement = {"factures" : "EQUIP LOURD", "B4600" : "EQUIP SIMPLIF", \
        "BC430" : "EQUIP PORTATIF","BC680" : "EQUIP LEGER", "" : "EQUIP EMBARQUE"}
     
     
        for element, lectureexcel in enumerate (os.listdir(chemin_destination)) :
    # Détermination de la taille du fichier.
            taille = round(os.path.getsize(lectureexcel)/1024,3)   
    # 
            for cle, valeur in societe.items() :
                if "fa" in lectureexcel :
                    if cle in lectureexcel[0:11] :
                        dico[element] = lectureexcel, valeur, taille
                else:
                    if cle in lectureexcel[0:2] :
                        dico[element] = lectureexcel, valeur, taille
     
     
            for cleequip, valeurequip in equipement.items() : 
                if cleequip in lectureexcel :
                    dico[element] = lectureexcel, valeur, taille, valeurequip
     
        for cle, valeur in dico.items():
            print(cle, valeur)          
     
        return retraitement
    retraitement()
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème boucle for
    Par revsys dans le forum Delphi
    Réponses: 20
    Dernier message: 24/05/2007, 15h50
  2. Problème boucle for
    Par rouliane dans le forum C++
    Réponses: 2
    Dernier message: 14/12/2006, 14h37
  3. [VBA-E, Débutant] Problème Boucle for
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/08/2006, 12h30
  4. [Débutant] Problème boucle for
    Par toniooooo dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 14h42
  5. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36

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