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 :

lister un niveau de 3 sous repertoires


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 lister un niveau de 3 sous repertoires
    bonjour,

    j' ai une question, est il possible de lister un nombre bien défini de sous répertoire?
    car je n'y arrive pas j'arrive a lister le répertoire principal et tous les sous répertoire, seulement je n'ai besoin que de 3 sous répertoires.

    voici ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import os
    import glob
    from os.path import basename
     
    repertoire = r"\\192.168.1.1\home\users"
    dossier = "maison"
    rep =""
    for fichier in glob.glob(os.path.join(repertoire, "**",rep), recursive=True):
        nom = os.path.basename(fichier)
        chemin = fichier.replace('\\' , '/')
        if dossier in chemin:
            essai = os.path.join(chemin)
            print(essai)
    merci

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par frederic2710 Voir le message
    j' ai une question, est il possible de lister un nombre bien défini de sous répertoire?
    Oui, suffit de compter les niveaux. Mais je ne passerais pas par glob.glob pour ça car cette fonction va jusqu'en bas. Je me bricolerais une petite fonction récursive à base de os.listdir() (ou éventuellement os.walk())...
    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]

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617

  4. #4
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    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 : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Proposition avec pathlib:
    Soit dans mon répertoire /tmp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mydir/
    ├── mydir2
    │** ├── mydir3
    │** │** ├── mydir4
    │** │** │** ├── mydir5
    │** │** │** │** └── prog5.ras
    │** │** │** └── prog4.py
    │** │** └── prog3.sh
    │** ├── progA2.py
    │** └── progB2.py
    └── progA.py
     
    4 directories, 6 files
    J'ai bricoler ceci (ça marche, mais peut être il y a mieux à faire):
    Pour tout lister:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>>from pathlib import Path
    >>> def ls_all(répertoire, récursion):
    	return list(str(l) for l in Path(répertoire).rglob('*') if len(l.relative_to(répertoire).parts)<=récursion+1)
     
    >>> ls_all('/tmp/mydir',3)
    ['/tmp/mydir/mydir2', '/tmp/mydir/progA.py', '/tmp/mydir/mydir2/mydir3', '/tmp/mydir/mydir2/progA2.py', '/tmp/mydir/mydir2/progB2.py', '/tmp/mydir/mydir2/mydir3/prog3.sh', '/tmp/mydir/mydir2/mydir3/mydir4', '/tmp/mydir/mydir2/mydir3/mydir4/prog4.py', '/tmp/mydir/mydir2/mydir3/mydir4/mydir5']
    >>>
    Pour ne lister que les fichiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def ls_onlyfile(répertoire, récursion):
    	return list(str(l) for l in Path(répertoire).rglob('*') if len(l.relative_to(répertoire).parts)<=récursion+1 and l.is_file())
     
    >>> ls_onlyfile('/tmp/mydir',3)
    ['/tmp/mydir/progA.py', '/tmp/mydir/mydir2/progA2.py', '/tmp/mydir/mydir2/progB2.py', '/tmp/mydir/mydir2/mydir3/prog3.sh', '/tmp/mydir/mydir2/mydir3/mydir4/prog4.py']
    >>>

  5. #5
    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
    merci pour toutes ces info,
    mais pour apporter plus de précision, je ne veux lister que les sous répertoires niveau 3 mais je ne veux pas lister les fichiers.


    merci

  6. #6
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    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 : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par frederic2710 Voir le message
    merci pour toutes ces info,
    mais pour apporter plus de précision, je ne veux lister que les sous répertoires niveau 3 mais je ne veux pas lister les fichiers.


    merci
    Ben,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def ls_dir(répertoire, récursion):
    	return list(str(l) for l in Path(répertoire).rglob('*') if len(l.relative_to(répertoire).parts)<=récursion and l.is_dir())
    édit: erreur de copié-collé

Discussions similaires

  1. Lister les sous repertoires et les fichiers d'un dossier
    Par benito9253 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/08/2009, 20h49
  2. Comment lister un nombre inconnu de sous repertoires ?
    Par liocifer dans le forum VBScript
    Réponses: 2
    Dernier message: 02/06/2008, 19h50
  3. création d'une arborescence pour lister un repertoire et ses sous-repertoires
    Par fadoua34090 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 10/02/2008, 21h26
  4. Réponses: 2
    Dernier message: 21/06/2007, 09h07
  5. [windev8]lister les sous-repertoires
    Par fanant dans le forum WinDev
    Réponses: 4
    Dernier message: 26/02/2007, 09h53

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