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 :

'unicode' object has no attribute 'append'


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut 'unicode' object has no attribute 'append'
    Bonjour à tous,

    J'ai un problème avec l'erreur
    'unicode' object has no attribute 'append'
    que je n'arrive pas à résoudre.

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        l_fichiers = []
        dico_finale = {}
        for code_client, trame_client in nom_trames(DB_CLIENTS).iteritems():
            dico_finale["code_client"]=code_client
            print trame_client
            for table in trame_client:
                print table
                dico_finale["tables_client"]= table
                if dico_finale.has_key("tables_client")== 1:
                    dico_finale["tables_client"].append(table)
    et voici le résultat avec le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [u'TIC_CBEMT']
    TIC_CBEMT
    Traceback (most recent call last):
      File "D:\ENERGIE\SCRIPTS\src\injDB.py", line 169, in <module>
        dico_finale["tables_client"].append(table)
    AttributeError: 'unicode' object has no attribute 'append'
    si je comprends bien je ne peux pas utiliser "append" avec un objet unicode mais alors comment faire pour ajouter une valeur à mon dictionnaire ?

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    ajouter/modifier une paire {clé:valeur} à un dico:


  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Merci pour cette réponse josmiley, voici mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        l_fichiers = []
        dico_finale = {}
        for code_client, trame_client in nom_trames(DB_CLIENTS).iteritems():
            dico_finale["code_client"]=code_client
            print trame_client
            for table in trame_client:
                print table
                dico_finale["tables_client"]= table
    je n'ai plus d'erreur sauf que je n'arrive pas à mettre les valeurs de la liste trames_client dans la clef "trame_client" de mon dictionnaire

  4. #4
    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,
    Ce que vous voulez faire n'est pas très clair, avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        for code_client, trame_client in nom_trames(DB_CLIENTS).iteritems():
            dico_finale["code_client"]=code_client
    la clé "code_client" sera écrasée à chaque itération.
    Il en est de même pour "tables_client":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           for table in trame_client:
                print table
                dico_finale["tables_client"]= table
    La structure suggère que "dico_finale" devrait être un dict de dict et vu que vous construisez déjà cela à partir d'items, cela devrait pouvoir se simplifier ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for code_client, trame_client in nom_trames(DB_CLIENTS).iteritems():
            dico_finale[code_client]= trame_client
    qu'en pensez vous?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Merci pour cette réponse wiztricks, finalement j'ai pu trouver une solution en créant un dictionnaire par client contenant le code_client, une liste des trame, la liste des fichiers correspondant voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dico_finale = {}
        for code_client, trame_client in nom_trames(DB_CLIENTS).iteritems():
            l_fichiers = []
            dico_finale["code_client"]=code_client
            dico_finale["tables"]= trame_client
            for item in liste_fichiers(PATH_TEMP, "csv"):
                if code_client in item:
                    l_fichiers.append(item)
                    l_fichiers = list(set(l_fichiers))
                    dico_finale["fichiers"]=l_fichiers
    voici le résultat :
    {'tables': [u'AAAA', u'BBBBB'], 'code_client': u'C0001', 'fichiers':['D:\\ENERGIE\\TEMP\\DATA\\TIC\\DB_C0001_AAA.csv', 'D:\\ENERGIE\\TEMP\DATA\\MODBUS\\DB_C0001_BBB.csv']}
    MErci

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

Discussions similaires

  1. 'module' object has no attribute 'maketrans'
    Par julien.63 dans le forum Général Python
    Réponses: 3
    Dernier message: 16/05/2009, 20h48
  2. Ftp : 'str' object has no attribute 'read'
    Par noquioz dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 02/01/2009, 15h46
  3. x object has no attribute y (PyQ4t et QLineEdit)
    Par EricStib dans le forum PyQt
    Réponses: 9
    Dernier message: 23/10/2008, 23h00
  4. Probleme : AttributeError: 'tuple' object has no attribute
    Par MrGecko dans le forum Général Python
    Réponses: 1
    Dernier message: 27/05/2007, 09h59
  5. Réponses: 2
    Dernier message: 26/05/2006, 14h48

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