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 :

S'arrêter à une seule occurrence dans une liste comprehension


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Par défaut S'arrêter à une seule occurrence dans une liste comprehension
    Bonjour ,

    Je suis en train de coder une petite application. Dans son utilisation sous windows, je dois passer par un .exe pour faire fonctionner une partie du log.

    Dans la partie qui m'amène ici, je dois détecter les lecteurs disponibles (je passe par psutil), après je dois détecter sur les lecteurs présents la présence de wkhtmltopdf.exe et déterminer les chemins ...

    Ca fonctionne mais c'est hyper long ! ... pour remédier à ça je voudrais qu'au 1er chemin trouvé, dans tous les cas, les boucles s'arrêtent (pour ne collecter qu'un seul chemin).

    Voilà mon code :

    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
    import psutil, os
     
    ll = [p2[p1] for p1, p2 in enumerate(psutil.disk_partitions())]
     
    liste_exe_wkhtmltopdf = [os.path.join(chem_parent, nom) for part in ll for chem_parent, sous_reps, fichiers in os.walk(part) for nom in fichiers if os.path.isfile(os.path.join(chem_parent, nom)) and "wkhtmltopdf.exe" in os.path.join(chem_parent, nom)]
     
    print(liste_exe_wkhtmltopdf)
     
    """ J'obtiens :
     
    ['D:\\wkhtmltopdf\\bin\\wkhtmltopdf.exe', 'D:\\cours_arts_plastiques\\Cours_Travaux_a_faire__COLLEGE_NOUVEAUX_PROGRAMMES\\script_python_fiches_eleves_feuilles_evaluation\\projet_ArtP\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\cours_arts_plastiques\\Cours_Travaux_a_faire__COLLEGE_NOUVEAUX_PROGRAMMES\\script_python_fiches_eleves_feuilles_evaluation\\projet_ArtP\\SAUV\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\cours_arts_plastiques\\Cours_Travaux_a_faire__COLLEGE_NOUVEAUX_PROGRAMMES\\script_python_fiches_eleves_feuilles_evaluation\\projet_ArtP\\SAUV\\A_dev_pour_version_windows\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\cours_arts_plastiques\\Cours_Travaux_a_faire__COLLEGE_NOUVEAUX_PROGRAMMES\\script_python_fiches_eleves_feuilles_evaluation\\projet_ArtP\\A_dev_pour_version_windows\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\projet_ArtP\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\projet_ArtP_DEV\\A_dev_pour_version_windows\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\projet_ArtP_DEV\\SAUV\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\projet_ArtP_DEV\\SAUV\\A_dev_pour_version_windows\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe', 'D:\\projet_ArtP_DEV\\windows_dependances_portables\\wkhtmltox\\bin\\wkhtmltopdf.exe']
     
    Dans la liste comprehension je voudrais forcer l'arrêt des boucles pour obtenir :
     
    ['D:\\wkhtmltopdf\\bin\\wkhtmltopdf.exe']
     
    ... c'est à dire juste le tout 1er chemin trouvé."""
    Est-ce possible ?, si oui pouvez-vous m'aider ?

    A bientôt.

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

    Citation Envoyé par ekdmekdm Voir le message
    Est-ce possible ?
    Il doit être possible de lever StopIteration sous une condition quelconque...

    Citation Envoyé par ekdmekdm Voir le message
    si oui pouvez-vous m'aider ?.
    Le résultat sera illisible.
    Et... coder çà avec des boucles "for" simples est bien plus simple.

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

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Il doit être possible de lever StopIteration sous une condition quelconque...

    Le résultat sera illisible.
    Et... coder çà avec des boucles "for" simples est bien plus simple.

    - W
    Salut wiztricks,

    Un exemple ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par ekdmekdm Voir le message
    Un exemple ?
    Les exemples de boucle "for" utilisant "break" ou "continue" sont dans tous les bons tutos.

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

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Par défaut
    Re,

    Ca semble bien se profiler sans utilisation d'une liste comprehension et avec un break au bon endroit ... il faudra tout de même que je teste sous windows.

    Désolé pour le bruit ... Merci pour les bons conseils.

    a+

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

    Citation Envoyé par ekdmekdm Voir le message
    Désolé pour le bruit ... Merci pour les bons conseils.
    Je ne vois pas trop pourquoi chercher partout cet exécutable là pour ne garder le premier chemin trouvé si ce n'est pas pour l'exécuter.
    Dans ce cas, çà veut dire que votre script en dépend...
    Autant créer un sous répertoire dans le répertoire du script et le recopier dedans: vous saurez où chercher et en plus ce sera a version attendue par votre code.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2016, 15h42
  2. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  3. Plusieurs indicateurs d'une meme table dans une seule requete
    Par arnaud.barre dans le forum Débuter
    Réponses: 5
    Dernier message: 12/04/2007, 17h23
  4. Réponses: 11
    Dernier message: 06/12/2005, 08h23

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