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 :

Concaténer des chaines de caractères pour créer une variable à laquelle on assigne une liste vide


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut Concaténer des chaines de caractères pour créer une variable à laquelle on assigne une liste vide
    Bonjour

    Je voudrais automatiser le processus suivant :
    0) j'ai un path de base, mydir = os.join.path(/content','drive','MyDrive','master')
    1) pour chaque sous dossier de 'master', je voudrais créer une liste répertoriant les sous dossiers

    2) utiliser le nom de chaque dossier de cette liste pour créer une liste vide dont le nom de la variable assignée est le nom du dossier + le préfixe ou suffixe "_encod_"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for char in os.listdir(mydir):
      print((char)+'_encod =[]' )
     
     
    ???
    3) pour chaque fichier de ces sous-dossiers, lister son chemin d'accès dans la liste créée à l'étape 2

    4) pour chaque fichier de ces sous-dossiers, appliquer une fonction personnalisée (myfonction(x))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mydir_arya= os.path.join(mydir, 'sousdossier')
    encod_arya = []
    
    for path in glob.glob(os.path.join(mydir_arya,'*.jpg')):
        enc_arya.append(myfonction(path))
    j'ai du mal a imbriquer ces étapes dans une boucle for, et encore moins a automatiser la création de variables...

    pourriez-vous m'aider svp ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour !

    En général ça :
    créer une liste vide dont le nom de la variable assignée est le nom du dossier + le préfixe ou suffixe "_encod_"
    C'est une mauvaise idée ! Il y a moyen de faire ça, les pros redonneront la solution, mais ce n'est pas conseillé car très souvent ça part d'une mauvaise compréhension de la logique de python.

    Je te conseillerais d'utiliser os.walk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> for p,d,f in os.walk(os.path.expanduser(r'~\Desktop\TEST')):
    	print(p, d, f)
     
     
    C:\Users\****\Desktop\TEST ['FOLDER_A', 'FOLDER_B'] ['TEST.txt', 'Toto.odg']
    C:\Users\****\Desktop\TEST\FOLDER_A ['__pycache__'] ['a.py']
    C:\Users\****\Desktop\TEST\FOLDER_A\__pycache__ [] ['a.cpython-39.pyc']
    C:\Users\****\Desktop\TEST\FOLDER_B [] ['b.py']
    Pourquoi avoir besoin de créer une variable 'nommé' à chaque fois ?
    Tu peux stocker ces listes dans un dictionnaire par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> dico = {}
    >>> for p,d,f in os.walk(os.path.expanduser(r'~\Desktop\TEST')):
    	for file in f:
    		dico.setdefault(os.path.basename(p),[]).append(os.path.join(p,file))
    En même temps tu peux appeler ta fonction et la mettre dans la liste si réel besoin...

    A+
    Dernière modification par Invité ; 02/12/2021 à 01h27.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Rrradassse Voir le message
    2) utiliser le nom de chaque dossier de cette liste pour créer une liste vide dont le nom de la variable assignée est le nom du dossier + le préfixe ou suffixe "_encod_"
    LeNarvalo a raison. Un nom de variable ne dépend pas du contenu de ladite variable mais du type de contenu. Si je dois stocker le nombre 5 dans une variable, je ne vais pas nommer ma variable "nombre_5" mais "nombre", ou peut-être plus précisément "nombre_de_livres" ou "nombre_en_stock". De même ton dossier initial tu l'as stocké dans la variable "myDir" (mon directory) parce que cette variable était destinée à stocker "un dossier en général" et non "le dossier master".

    Tu cherches à régler de façon bien maladroite un souci qui se règle de façon très naturelle par les tableaux justement faits pour ça. Tu veux gérer n dossiers, (ou n fichiers) tu dois utiliser un tableau de dossiers (ou de fichiers). Ou comme l'a dit LeNarvalo un dictionnaire (qui n'est qu'un tableau un peu particulier). Ensuite tu pourras boucler dessus pour effectuer un traitement codé une seule fois. Et non pas générer n variables au nom tous différents que tu devras ensuiite traiter n fois avec n lignes de code.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Je ne suis pas sure de comprendre, du coup je vais expliciter mon besoin plus en détail :
    J'ai 200 personnes, 200 dossier nommés chacun avec le nom de la personne . 4 à 10 photos par personne.
    Je souhaite récupérer ces photos sur python pour les encoder, et les stocker chacune dans une clef qui aura le nom de la personne et donc du dossier dont les photos sont tirées), afin ensuite de développer un modele de reconnaissance faciale.
    Je peux éventuellement supprimer le dossier intermédiaire et mettre toutes les photos dans un grand dossier en nommant les photos nom_01.jpg ou 01_nom.jpg mais dans ce cas il faudra que je récupère la partie gauche (ou droite) de la photo pour nommer la clef de chaque personne avec son nom, afin de pouvoir récupérer ce nom lors de l'identification sur la photo inconnue ...

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Si c'est une personne par clef (USB?), il va falloir changer de clef... dans l'opération.

    Après une arborescence a 2 niveaux (personne/photos), c'est traiter chaque répertoire (personne) l'un après l'autre (pour "bouger" les photos)... sans oublier le changement de clef.

    Qui dit 2 niveaux, dit doubles itérations... et c'est ce qu'on sait faire après avoir suivi un minimum de tuto: qu'est ce qui vous bloque?

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

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Rrradassse Voir le message
    Citation Envoyé par Rrradassse Voir le message
    2) utiliser le nom de chaque dossier de cette liste pour créer une liste vide dont le nom de la variable assignée est le nom du dossier + le préfixe ou suffixe "_encod_"
    Je ne suis pas sure de comprendre, du coup je vais expliciter mon besoin plus en détail :
    J'ai 200 personnes, 200 dossier nommés chacun avec le nom de la personne . 4 à 10 photos par personne.
    Je souhaite récupérer ces photos sur python pour les encoder, et les stocker chacune dans une clef qui aura le nom de la personne et donc du dossier dont les photos sont tirées), afin ensuite de développer un modele de reconnaissance faciale.
    Je peux éventuellement supprimer le dossier intermédiaire et mettre toutes les photos dans un grand dossier en nommant les photos nom_01.jpg ou 01_nom.jpg mais dans ce cas il faudra que je récupère la partie gauche (ou droite) de la photo pour nommer la clef de chaque personne avec son nom, afin de pouvoir récupérer ce nom lors de l'identification sur la photo inconnue ...
    Tu avais pourtant bien clairement parlé de "nom de variable" dans ton premier post. Dans tous les langages informatiques du monde, une variable c'est un symbole qui associe un nom (identifiant) à une valeur. Exemple toto=5 ou myDir=os.path.join(...). Dans chaque cas, le nom de la variable c'est ce qui est situé avant le "=" ("toto" et "myDir" dans mes deux exemples). Il restera invariant dans tout le programme (contrairement à son contenu qui, lui, peut varier d'où le nom de "variable").

    Pour le reste, ce que tu veux faire reste assez flou. Qu'entends-tu par "encoder" ?
    De ce que je lis, tu as 200 dossiers sur ton disque et tu veux les copier sur clef USB, te suffit de plugguer ta clef USB sur ton ordinateur et faire un copier/coller de tes 200 dossiers. Python n'aura rien à faire la dedans. Quant à utiliser "une clef par dossier" (déjà que j'ai 6 clefs USB et que j'en égare régulièrement 5, gérer 200 clefs...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut
    heu... non, Clef de dictionnaire, je n'ai jamais parlé d'USB ha ha, j'essaie de travailler avec Python pas avec des ports usb .... et je ne veux pas bouger les photos. Je veux les read, encoding, face_recognition, vectorize, et calculer la distance euclydienne entre chaque vecteur un a un pour faire ma reconnaissance faciale. Mais je n'arrive pas à faire la boucle qui ouvre un dossier, load les photos une a une, les transforme en vecteur et surtout crée une variable (clef) qui porte le nom du dossier (automatiquement) et qui prend la valeur du vecteur... J'arrive a faire ma reconnaissance faciale pour une liste de personnes quand je les encode a la main, mais pas en boucle, et pas si je ne crée pas a la main mes clefs...

    merci pour vos réponses

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Rrradassse Voir le message
    Mais je n'arrive pas à faire la boucle qui ouvre un dossier, load les photos une a une, les transforme en vecteur et surtout crée une variable (clef) qui porte le nom du dossier (automatiquement) et qui prend la valeur du vecteur...
    Ah là ça va mieux.
    Pour afficher (de là traiter) tous les fichiers d'un dossier: for fic in os.listdir(dossier): print(fic). Il faut faire attention, le nom du fichier sera celui vu depuis le dossier en question. Si par exemple le dossier "xxx" contient un fichier "toto", tu verras "toto" et non pas "xxx/toto".
    Pour vérifier le type "fichier" d'un fichier os.path.isfile(fichier) (parce qu'un dossier ne contient pas que des fichiers)
    Pour lire un fichier en binaire (donc sans présumer donc de la nature de son contenu): with open(fichier, "rb") as fp: data=fp.read().
    Le reste n'est que du traitement de string. Je te conseillerais d'écrire une fonction faite pour traiter "un" dossier ce qui est permettra déjà de la tester jusqu'à ce qu'elle soit ok pour ensuite l'appeler facilement pour tous les dossiers photos que tu as à traiter.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Rrradassse Voir le message
    surtout crée une variable (clef) qui porte le nom du dossier (automatiquement) et qui prend la valeur du vecteur...
    Le nom d'un répertoire est une chaîne de caractères qui peut être utilisé comme clef d'un dictionnaire.
    note: quand on parle de photos et de personnes, on n'est plus au niveau réalisation python avec éventuellement un dictionnaire et ses clefs/valeurs.

    Pour le reste, dans tous les tutos vous avez un chapitre sur les fichiers et sans doute sur les dictionnaires... Il y a même tout un chapitre de la FAQ sur les fichiers.

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

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Rrradassse Voir le message
    Bonjour,

    Merci pour vos réponses.

    Je ne suis pas sure de comprendre, du coup je vais expliciter mon besoin plus en détail :
    J'ai 200 personnes, 200 dossier nommés chacun avec le nom de la personne . 4 à 10 photos par personne.
    Je souhaite récupérer ces photos sur python pour les encoder, et les stocker chacune dans une clef qui aura le nom de la personne et donc du dossier dont les photos sont tirées), afin ensuite de développer un modele de reconnaissance faciale.
    Je peux éventuellement supprimer le dossier intermédiaire et mettre toutes les photos dans un grand dossier en nommant les photos nom_01.jpg ou 01_nom.jpg mais dans ce cas il faudra que je récupère la partie gauche (ou droite) de la photo pour nommer la clef de chaque personne avec son nom, afin de pouvoir récupérer ce nom lors de l'identification sur la photo inconnue ...
    Eh bien ce que j'ai posté devrait faire l'affaire...
    Le code stock les chemins des fichiers photos présentes dans chaque dossier de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dico = {'M. Dupont': ['chemin_photo1.jpg','chemin_photo2.jpg'], 'M. Durant':['chemin_photo1.jpg','chemin_photo2.jpg','chemin_photo3.jpg','chemin_photo4.jpg'], ...}
    Ensuite tu n'as plus qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for nom in dico.keys():
        paths = dico[nom]
        for path in paths:
            mafonction_de_traitement_dimage(nom, path)
    C'est bien ça que tu veux ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut
    Hello

    plus simplement,

    j'ai la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listes = ["papa", "maman", "toto"]
    je souhaite faire une boucle for de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for elt in liste
          elt = []
    de façon que j'ai ensuite les listes vides suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    papa  = []
    maman = []
    toto = []
    sur lesquelles je puisse faire
    etc.

    j'ai essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    v = []
    for char in os.listdir(mydir):
      v.append((char)+'=[]')
     
    v
    mais si je fais j'ai l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NameError: name 'papa' is not defined
    merci pour votre temps

  12. #12
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 333
    Par défaut
    bonjour
    cette ligne n'a pas de sens pour python ! tu essayes a ta façon (MAIS PAS en python) de faire un tableau de tableau ? lire/faire un tuto sur les listes python me semble plus que nécessaire pour toi.
    le message de LeNarvalo était clair : faire un dictionnaire avec une liste de photos !

    ps: utilise de bons noms de variables, sinon ton code est incompréhensible (pour toi et les autres)

    Un exemple:
    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
     
    personnes = {
        "papa": {
            "chemin": "xxx/yyy/",
            "photos": []
        },
        "maman": {
            "chemin": "zzzz//bbbb",
            "photos": []
        }
    }
     
    for nom in personnes.keys():
        personne = personnes[nom]
        print(key, personne)
        for photo in os.listdir(personne['chemin']):
            personne['photos'].append(photo)
    possible aussi d'utiliser une stucture (plus simple ? c'est selon tes besoins futurs...) du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    personnes = [
        {
            "nom": "papa",
            "chemin": "xxx/yyy/",
            "photos": []
        },
        {
            "nom": "maman",
            "chemin": "zzzz//bbbb",
            "photos": []
        }
    ]

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut
    Bonsoir

    le problème c'est qu'il faut que "personnes" (la partie gauche avant le = ) soit défini par l'élement "personnes" de ma boucle for (for personnes in monde: ) et pas par moi : je pars d'un dictionnaire vide, et c'est dynamique et il y en a autant que d'individus de ma liste...

  14. #14
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 333
    Par défaut
    Citation Envoyé par Rrradassse Voir le message
    soit défini par l'élement "personnes" de ma boucle for (for personnes in monde: ) et pas par moi : c'est dynamique
    je t'ai proposé 2 structures ! pas un code fini, rien ne t'empêche de créer la même structure dynamiquement en fonction de ta mystérieuse variable "monde" (peut-être revoir ta structure "monde" ?) apparemment rien de méchant

    si le nom de la personne est un répertoire, faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      personnes = []
      for dir in os.readdirs():
         personne = {
            "nom": dirname(dir),
            "chemin": "c:\mes photos\" + dir + "/",
            "photos": []
        }
        personnes.append(personne)
    Dans ta structure "personne" il ne peut avoir qu'un répertoire et la liste des photos ... c'est selon tes entrées

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut
    hello,
    je continue d'essayer parce que ca ne marche pas ><

    j'essaie d'appliquer ce code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for nom in personnes.keys():
        personne = personnes[nom]
        print(key, personne)
        for photo in os.listdir(personne['chemin']):
            personne['photos'].append(photo)
    (j'ai commencé juste avec la 1ere partie du code) mais a la fin mon dictionnaire est vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    key_words = ['enc_1', 'enc_2']
    dico = {}
    value = "valeur" 
    for key in dico.keys():
      for word in key_words:
        key = word
        value = dico[key]
    print(dico)
    renvoie :

  16. #16
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 333
    Par défaut
    Comme dit tout à l'heure : utilise des bons noms de variable ! ton code est incompréhensible (ou c'est que tu ne désires pas d'aide ?)

    cela ne risque pas de fonctionner car tu confonds liste et dictionnaire

    Tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dico = {}
    for key in dico.keys():
    soit : créer un dictionnaire vide "dico" et boucler sur cette structure vide ... résultat: rien (encore heureux)
    ET en aucun cas tu n'essayes de modifier dico ??? je n'ai donc aucune idée de ce que tu essayes de faire (juste value = dico[key] )
    ps: je me répète, il faut lire des tutos je ne vais pas écrire ton code pour toi !

    désolé mais je ne sais pas ce que c'est que ton key_words = ['enc_1', 'enc_2'] - des répertoires ? un par personne ? je t'ai donné un pseudo code pour créer ta structure dynamiquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    repertoires = ['enc_1', 'enc_2']
    personnes = []
    for repertoire in repertoires:
     personne = {
         "nom" : extraire_nom_du_repertoire(repertoire),
         "repertoire" : repertoire
         "photos" : []
     }
     personnes.append(personne)
    Ensuite tu boucles sur personnes (son répertoire) pour trouver les photos à mettre dans personne['repertoire']

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 82
    Par défaut
    hello

    je crois que j'ai trouvé un début qui marche avec un post de eyquem de 2009 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    key_words = ["test1", "test2"]
    dico = {}
    value_list = ['val1', 'val2']
    z = zip(key_words,value_list)
    for u,v in z:
        dico[u] = v
    print(dico)
    me emplit enfin mon dictionnaire \o/
    dans les key_words je veut le noms de mes personnes et dans la value_list leurs photos... a la fin je veux juste une seule chose : encoder les photos et pouvoir avoir un label (son nom) dessus pour reconnaitre la personne sur sa photo et ensuite reconnaitre cette personne sur des nouvells images

  18. #18
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 333
    Par défaut
    il faut déjà comprendre un minimum python avant de piocher au hasard un code

    tu n'as qu'une photo par personne et ton copier/collé est bon (pas ta demande)

  19. #19
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Rrradassse Voir le message
    plus simplement,

    j'ai la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listes = ["papa", "maman", "toto"]
    je souhaite faire une boucle for de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for elt in liste
          elt = []
    de façon que j'ai ensuite les listes vides suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    papa  = []
    maman = []
    toto = []
    sur lesquelles je puisse faire
    etc.
    Ha ben c'est bien ça, c'est bien ce que j'avais compris. Tu tentes de créer des variables avec un nom variable (ou un nom dépendant des données ce qui revient au même). Or on te l'a dit, cela ne se fait pas. Le nom d'une variable, déjà, il est invariant (oui ça semble paradoxal mais le terme "variable" s'applique à la donnée qu'on doit stocker, pas au nom de la boite dans laquelle on la met) ; et surtout il ne change pas en fonction des valeurs qu'on va y mettre (si la liste contient "titi" tu vas alors vouloir créer une variable "titi"...)

    Citation Envoyé par Rrradassse Voir le message
    le problème c'est qu'il faut que "personnes" (la partie gauche avant le = ) soit défini par l'élement "personnes" de ma boucle for (for personnes in monde: ) et pas par moi
    Ca ce n'est pas le problème, c'est la solution que tu as trouvée pour résoudre ton problème, solution bien évidemment totalement foireuse et correspondant parfaitement à un cas d'école de problème XY. La partie gauche du "=" est obligatoirement définie par le programmeur. Mais en plus, si cela n'est pas possible (*), c'est surtout parce que c'est totalement inutile. Celui qui en arrive à cette façon de faire à obligatoirement raté quelque chose dans la conception de son algorithme.

    (*) en réalité ça l'est via eval() mais ça ne change rien, cela reste la chose à ne pas faire

    Citation Envoyé par Rrradassse Voir le message
    j'ai la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listes = ["papa", "maman", "toto"]
    je souhaite faire une boucle for de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for elt in liste
          elt = []
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listes = ["papa", "maman", "toto"]
    elt=dict()
    for x in listes: elt[x]=list()
    Citation Envoyé par Rrradassse Voir le message
    et c'est dynamique et il y en a autant que d'individus de ma liste...
    Oui on s'en doute bien que le code ne va pas tourner avec "papa", "maman" et "toto". Mais avec ma façon de faire c'est dynamique aussi.

    Citation Envoyé par Rrradassse Voir le message
    sur lesquelles je puisse faire
    elt["papa"].append(...)...

    Citation Envoyé par Rrradassse Voir le message
    je continue d'essayer parce que ca ne marche pas ><
    Comme les shadocks. Plus on essaye, plus on a de chances que ça finisse par marcher

    Citation Envoyé par Rrradassse Voir le message
    je crois que j'ai trouvé un début qui marche avec un post de eyquem de 2009
    wé super. Tu commencerais par ouvrir un tuto, tu perdrais moins de temps à aller chercher dans des archives de 12 ans les exemples de base qui y sont déjà écrits.

    Citation Envoyé par Rrradassse Voir le message
    dans les key_words je veut le noms de mes personnes et dans la value_list leurs photos...
    Comme l'a dit wiztricks, le nom du dossier (nom de la personne) n'étant qu'une string, rien ne t'interdit de l'utiliser comme clef de dictionnaire. Et pour la value il te suffit d'ouvrir le fichier photo et le charger (j'ai déjà montré les façons de faire cela)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Débutant] Extration et Concaténation des chaines de caractères en vb
    Par Gbedjanhoungbo Jean dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/08/2020, 22h15
  2. Réponses: 5
    Dernier message: 27/03/2018, 18h20
  3. Réponses: 11
    Dernier message: 03/07/2017, 15h45
  4. Rechercher des chaines de caractères précises dans une page
    Par Amour312 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/12/2016, 11h24
  5. Réponses: 1
    Dernier message: 30/01/2013, 21h15

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