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 :

Trouver l'emplacement d'un logiciel sur l'ordinateur [Python 3.X]


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut Trouver l'emplacement d'un logiciel sur l'ordinateur
    Bonjour,

    Existe-t-il une fonction Python qui permette de donner l'emplacement/chemin où se trouve un logiciel ?
    (ex : pour savoir où est Excel, récupérer C:\Program Files\Microsoft Office\excel.exe)

    Merci!

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Une recherche récursive ?
    Pas d'aide par mp.

  3. #3
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Salut

    C'est plutôt du ressort de l'OS de fournir ce genre d'outils. Même si un langage (python, ou autre) le permet en, justement, s'appuyant sur l'OS, ce sera toujours une "sur-couche" !
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  4. #4
    Membre confirmé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Points : 455
    Points
    455
    Billets dans le blog
    1
    Par défaut
    Il n'y a pas de solution toute prête, j'en ai peur...
    Il y a bien os.walk mais un parcours exhaustif, ça risque d'être long.

    Alors comme je viens juste de résoudre le problème pour moi, je te livre ma solution pour trouver java sur un PC :

    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
    import os
     
    def listdir ( path ):
        try    : return os.listdir( path )
        except : return []
     
    def find_file ( fileok,dirok=None,base='',deep=0 ):
        if not base :
            for d in 'cdefgab' :
                res = find_file( fileok,dirok,d+':/',1 )
                if res : return res
            return
        for f in listdir( base ) :
            if dirok and dirok( deep,base,f ):
                ff = os.path.join( base,f )
                if os.path.isdir( ff ):
                    res = find_file( fileok,dirok,ff,deep+1 )
                    if res : return res
                elif fileok( ff ) :
                    return ff
     
    def find_java ():
        dirok  = lambda deep,dir,filename : deep < 6 and filename.lower().startswith( ('','prog','java','jdk','bin','java')[deep] )
        fileok = lambda filename : filename.lower().endswith('java.exe')
        return find_file( fileok,dirok )
    Il recherche un fichier qui matche : ?:/prog*/java*/jdk*/bin*/java.exe.
    A toi d'écrire les fonctions dirok et fileok qui vont bien pour ta recherche.
    Captain'Flam
    anciennement Sopsag, aka Hadrien
    Win seven x64 & Win 10 / Visual 2017 / Python 2.7 / Eclipse

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'avais proposé il y a peu de temps un petit code Python qui fait ça:

    http://www.developpez.net/forums/d15...b/#post8379811

    Basé sur os.walk et fnmatch, il est finalement assez rapide et fait très bien le boulot.

    Et rien n'empêche de l'améliorer. Par exemple, arrêter la recherche au 1er trouvé. Ou même chercher selon un motif de regex, Ou même, soyons fous, selon une recherche de mots similaires (avec ratio de similitude) quand on n'est pas sûr de l'orthographe exacte du nom de fichier...

    A mon avis, en terme de rapidité, ce n'est pas la vitesse de Python qui compte mais celle de l'OS (accès disque). Et la seule façon qu'à l'OS d'accélérer ses recherches, c'est d'indexer les fichiers en avance.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Sur unix, la commande magique s'appelle "which".
    La commande windows "where" fait a peu près le boulot.
    Après, si on veut intégrer la chose à un programme Python, lancer la commande via subprocess.check_output devrait suffire.


    notez que rechercher les répertoires contenant des fichiers nommés "excel.exe" ou "python.exe" pourra sortir bien plus l'exécutable lancé lorsqu'on tape "excel.exe" ou "python.exe". Ce n'est donc pas très fiable et en plus ça risque de durer un temps certain.

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

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Pour accélérer la recherche d'exécutables, peut-être peut-on chercher en priorité dans les répertoires du PATH?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Pour accélérer la recherche d'exécutables, peut-être peut-on chercher en priorité dans les répertoires du PATH?
    Certes mais pourquoi s'em... à recoder en Python ce que l'OS fait déjà assez bien?

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

  9. #9
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Certes mais pourquoi s'em... à recoder en Python ce que l'OS fait déjà assez bien?
    Pour le plaisir?

    Effectivement, WHERE en console sous Windows fait ça très bien, y compris en utilisant les répertoires du PATH! Je ne l'utilise jamais, mais j'ai tort.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Merci beaucoup à tous pour vos réponses !
    Je n'ai pas pu tester toutes les propositions par manque de temps.. J'ai vu qu'on peut également utiliser glob, qui a l'air d'être simple à utiliser et bien fonctionner.
    J'ai choisi d'utiliser la commande Windows WHERE pour sa rapidité et car il permet de voir quel chemin est enregistré dans Path pour le logiciel (il me semble)(car le logiciel qui m'intéresse possède des extensions dans d'autres logiciels et donc je me retrouvai avec plusieurs solutions parfois).

    Merci !

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

Discussions similaires

  1. installer un logiciel sur plusieurs ordinateurs d'un domaine
    Par pacifiquement dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 30/12/2014, 16h55
  2. Trouver l'emplacement d'un fichier sur le disque
    Par zarbouine dans le forum Delphi
    Réponses: 4
    Dernier message: 12/02/2007, 18h48
  3. Réponses: 5
    Dernier message: 21/12/2004, 15h17
  4. Réponses: 8
    Dernier message: 08/06/2004, 01h29
  5. Trouver l'emplacement de la machine virtuelle java
    Par aymron dans le forum Windows
    Réponses: 2
    Dernier message: 30/03/2004, 12h11

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