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 un dossier


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 67
    Par défaut trouver un dossier
    bonjour,

    j'aimerai savoir comment retrouver un dossier situé dans une arborescence.
    j'ai un nom de dossier ,et j'aimerai le retrouver.
    voici le début qui me permet de lister tous les dossiers.

    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import os
    import glob
     
    Addr = r"\\192.168.1.20\\COURANT\\"
     
    nom de dossier ="travail"
    X = glob(Addr + "/**/", recursive = True)
     
    for Addr in X:

  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,

    Trouver si une chaîne de caractères est dans ... ou égale à... une des chaînes de caractères d'une liste se fait basiquement via une boucle et une condition et de façon plus élaborée via des set voire des expressions régulières.

    Reste que cette chaîne de caractères est un nom de fichier qui passée à glob.glob (intelligemment) retournera une liste qui contiendra (ou pas) un nom de fichier qui pourra être le répertoire recherché.

    Et il n'est pas utile de sortir cette artillerie là pour savoir si un fichier/répertoire donné existe: os.path.exists, os.is_dir,... sont là pour çà.


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

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 67
    Par défaut
    bonjour,

    est ce que c'est valable pour les noms de dossiers?

  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 frederic2710 Voir le message
    est ce que c'est valable pour les noms de dossiers?
    Vous testez après avoir ouvert la documentation et vérifié que ce que vous entreprenez est "licite" puis vous vérifier que çà le fait (ou pas). L'ordinateur ne va pas vous mordre et vous pourrez toujours poster ce que vous avez essayé...

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

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut !

    Moi je propose d'utiliser os.walk pour parcourir une arborescence puis arrêter le parcours quand le dossier/fichier est trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def test(word_to_find, path):
    	for p, subdirs, files in os.walk(os.path.expanduser(path)):
    		if word_to_find in p:
    			print('FOUND 1',p)
    			return
    		for item in files+subdirs:
    			if word_to_find in item:
    				print('FOUND 2',item)
    				return
    https://docs.python.org/fr/3/library...20walk#os.walk

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a plusieurs façons de chercher les fichiers et dossiers d'une disque. os.walk est le plus complet et a plusieurs avantages, y compris de bien gérer les erreurs, et de permettre plusieurs parcours (top-down et bottom-up). Mais glob.glob est probablement le plus simple. J'ai d'ailleurs un peu creusé son utilisation "récursive" ici: https://www.developpez.net/forums/d1...ive-glob-glob/

    Par exemple, pour répondre à la question de ce fil:

    Je cherche le dossier "pip" dans le Python installé sous Windows:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import os
    from glob import iglob
     
    repertoire = r"C:\Python39" # mettez la bonne adresse!
    motif = "pip" # nom du dossier recherché
     
    for entree in iglob(os.path.join(repertoire, "**", motif), recursive=True):
        if os.path.isdir(entree):
            print(entree)
    Réponse (chez moi):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Python39\Lib\site-packages\pip
    Commentaires:
    - j'utilise ici iglob au lieu de glob pour avoir les réponses une à une, et non sous forme de liste
    - motif est ici le motif "wildcard" du dossier cherché. Par exemple, on pourrait chercher un dossier commençant par "p": motif="p*". Mais ici, on cherche un nom exact: motif="pip"
    - os.path.join(...) permet de construire un chemin en respectant la syntaxe des différents OS (Windows, Linux, OSX)
    - os.path.isdir(entree) renvoie True si entree est un dossier (et False si c'est un fichier)

  7. #7
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 920
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Avec pathlib:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from pathlib import Path
     
    >>> p = Path(pat)
    >>> sorted(p.rglob(motif))

Discussions similaires

  1. Trouver les dossier spéciaux de windows
    Par Montor dans le forum Contribuez
    Réponses: 7
    Dernier message: 11/12/2009, 15h16
  2. où trouver le dossier créer par sharepoint
    Par samworkflow dans le forum SharePoint
    Réponses: 2
    Dernier message: 31/03/2009, 07h39
  3. Code pour trouver le dossier le plus récent
    Par trblolo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/01/2009, 12h07
  4. Trouver le dossier parent de l'application
    Par Mariquiqui dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/07/2008, 16h33
  5. [trouver le dossier du programme]
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 1
    Dernier message: 08/08/2006, 12h17

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