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 :

Boucler sur plusieurs dossiers [Python 2.X]


Sujet :

Python

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut Boucler sur plusieurs dossiers
    Bonjour,

    Voila je souhaite récupérer le nom de chaques dossiers (plusieurs centaines) présent dans un seul dossier pour ensuite écrire dans un fichier .txt le nom des dossiers présents.

    Habituellement je boucle sur des fichiers et j'utilise ce bout de code qui fonctionne très bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import glob
    ext="*.jpg"
    for files in glob.glob(ext):
        print files
    Sauf que là pour les dossiers il n'existe pas d'extensions. Du coup je ne trouve pas comment faire.

    Un coup de pouce ?

    Merci d'avance.

  2. #2
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Je viens de trouver ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import os
    path='C:\Developement\Python'
    subdirectories=os.listdir(path)
    print subdirectories
    Cela fonctionne mais il me créé une liste pour subdirectories. Pas très pratique pour moi car je vais devoir faire une boucle sur chaque éléments de la liste pour pouvoir les écrire dans mon fichier texte ensuite.

    Ni aurait il pas une autre solution mais dans le même genre que le code cité plus haut avec une boucle for?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import glob
    ext="*.jpg"
    for files in glob.glob(ext):
        print files

  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,

    Citation Envoyé par nekcorp Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import os
    path='C:\Developement\Python'
    subdirectories=os.listdir(path)
    print subdirectories
    Cela fonctionne mais il me créé une liste pour subdirectories
    Ben oui. Tout comme "glob.glob(ext)" !!!

    Citation Envoyé par nekcorp Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import glob
    ext="*.jpg"
    for files in glob.glob(ext):
        print files

    Seulement, là, tu fais l'effort de boucler sur la dite liste.

    De plus, ce que tu as trouvé "marche" uniquement parce que tu n'as que des (sous-)répertoires dans le répertoire listé. C'est un coup de bol. os.listdir te ramène tous les fichiers contenus.

    Va plutôt voir os.path.isdir pour rester plus général.
    "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 averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Bah oui, en fait ça reviendrait à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import os
    path='C:\Developement\Python'
    for folders in os.listdir(path):
         print folders
    Pour en revenir au coup de bol, et bien normalement il ne peux pas y avoir de sous répertoires dans mes dossiers que je veux lister. Donc normalement je ne devrais pas rencontrer de soucis.

    je vais voir pour os.path.isdir ce que raconte la doc.

    Merci

  5. #5
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Notez aussi l'existence de os.walk qui peut s'avérer fort utile.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  6. #6
    Candidat au Club
    Homme Profil pro
    mécanicien
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : mécanicien

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Pourquoi pas tout simplement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import os
    path='C:\Developement\Python'
    for fichier os.listdir(path):
        # Si c'est un dossier 
        if os.path.isdir(fichier) == True:
            print fichier

  7. #7
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    os.walk va parcourir recursivement les different dossier et fait directement une distinction entre dossier, sous dossier et fichier.

    Pour reprendre l'exemple de cet article de Sam et Max,

    test
    ├── dossier
    │ ├── fichier.py
    │ ├── fichier.txt
    │ └── pas_un_dossier.txt
    ├── Dossier
    │ ├── dOssier
    │ │ └── faichier
    │ └── fichiiiiiiiiier
    ├── .fichier
    ├── fichier
    ├── fIchier
    └── Fichier

    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
    for dossier, sous_dossiers, fichiers in os.walk('/tmp/test'):
        print('##### %s #####' % dossier)
        print("Sous dossiers : %s" % sous_dossiers)
        print("Fichiers : %s" % fichiers)
    ##### /tmp/test #####
    Sous dossiers : ['dossier', 'Dossier']
    Fichiers : ['fichier', 'fIchier', '.fichier', 'Fichier']
    ##### /tmp/test/dossier #####
    Sous dossiers : []
    Fichiers : ['fichier.txt', 'pas_un_dossier.txt', 'fichier.py']
    ##### /tmp/test/Dossier #####
    Sous dossiers : ['dOssier']
    Fichiers : ['fichiiiiiiiiier']
    ##### /tmp/test/Dossier/dOssier #####
    Sous dossiers : []
    Fichiers : ['faichier']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for dossier, sous_dossiers, fichiers in os.walk('/tmp/test'):
        for fichier in fichiers:
            print(os.path.join(dossier, fichier))
    /tmp/test/fichier
    /tmp/test/fIchier
    /tmp/test/.fichier
    /tmp/test/Fichier
    /tmp/test/dossier/fichier.txt
    /tmp/test/dossier/pas_un_dossier.txt
    /tmp/test/dossier/fichier.py
    /tmp/test/Dossier/fichiiiiiiiiier
    /tmp/test/Dossier/dOssier/faichier
    Le dernier extrait de code montre comment reconstituer les chemins complets
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

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

    Python 3.4 inclut le module pathlib qui mérite aussi le détour.

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

  9. #9
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Python 3.4 inclut le module pathlib qui mérite aussi le détour.

    - W
    Je ne me suis pas encore lancé à python 3. Un jour peut être

  10. #10
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par slackliner Voir le message
    Pourquoi pas tout simplement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import os
    path='C:\Developement\Python'
    for fichier os.listdir(path):
        # Si c'est un dossier 
        if os.path.isdir(fichier) == True:
            print fichier
    Merci c'est ce que j'ai utilisé finalement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for FOLDERS in os.listdir(PATH):
        if os.path.isdir(PATH+'/'+FOLDERS)==True:
            FOLDER_NAME=FOLDERS
            print FOLDER_NAME

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

Discussions similaires

  1. [USB] Copier un dossier sur plusieurs clés USB
    Par jontleman dans le forum Composants
    Réponses: 17
    Dernier message: 23/06/2019, 20h07
  2. Réponses: 5
    Dernier message: 19/05/2015, 01h38
  3. Boucler sur plusieurs colonnes
    Par j0joo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/01/2015, 14h21
  4. [AppleScript] Boucler sur plusieurs dossiers
    Par nekcorp dans le forum AppleScript
    Réponses: 1
    Dernier message: 26/08/2014, 07h21
  5. Diaporama simple sur plusieurs dossiers
    Par Seboochoo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/12/2010, 23h09

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