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!
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!
Une recherche récursive ?
Pas d'aide par mp.
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 !
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 :
Il recherche un fichier qui matche : ?:/prog*/java*/jdk*/bin*/java.exe.
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 )
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
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
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
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
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
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 !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager