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 :

Ouverture d'un dossier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Par défaut Ouverture d'un dossier
    Bonjour tout le monde:

    Je travail sur un projet qui consiste à traiter des données disponibles dans un fichier quelconque, quej'ai au début pris comme exemple pour tester le fonctionnement du projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def main():  
        """ Fonction principale du programme """  
        infile="C:\\Documents and Settings\\All Users\\Données.doc"
    Sachant que: Ce document existe dans un sous dossier qui contient une dizaine de documents semblables, et que ce sous dossier est contenu dans un dossier parents au milieux de 4 autres sous dossiers qui contiennent eux même des fichiers doc que je dois aussi traiter. Comment faire pour gérer tout ces contretemps:

    Dossier 'config' contient 4 sous dossiers. Chaque sous dossier contient une dizaine de fichiers .doc qu'il faut ouvrir et analyser.

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    J'ai du louper un détail de la question, mais à première vue, si tu dois tout traiter tu dois tout traiter... Je ne vois pas en quoi ça pose problème non plus

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Par défaut
    Comment faire pour ouvrir tout le dossier
    Dans l'exemple, je travaillas sur un fichier prototype qui est dans un sous dossier du dossier parent

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Pour obtenir tous les fichiers qui se trouvent dans le dossier, tu peux faire appel à os.listdir. C'est une fonction qui prend en paramètre le chemin vers le dossier, et qui te retourne une liste de tout ce qu'il contient.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Par défaut
    Entre obtenir la liste des fichiers qu'il contient, et les ouvrir tous pour les traiter, il y a du chemin à faire et c'est cela qui me dérange.
    J'ai essayé avec un nouveau module pour moi: le module os avec sa fonction walk(top), mais le programme affiche des erreurs!!!

  6. #6
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Il te faut une fonction récursive pour visiter tous les sous dossiers.

    Pour info, os.linesep correspond au caractère pour passer à la ligne suivante (\r\n sous dos), et os.path.sep le caractère qui sépare les dossiers ( \ sous dos)
    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
    import os
    import os.path
     
    basedir = r"C:\Documents and Settings\All Users"
     
    def recurse(directory):
        print("Lecture du dossier %s" % directory)
     
        for entry in os.listdir(directory):
            fullname = directory + os.path.sep + entry
     
            if os.path.isdir(fullname):
                recurse(fullname)
     
            elif os.path.isfile(fullname) and entry.endswith('.doc'):
                # Traiter le fichier
     
        print("Fin du dossier %s%s" % (directory, os.linesep))

  7. #7
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    admettons cette arborescence (d=directory, f=file) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    A        d
    |
    +-B          d
    |  |
    |  +-file1    f
    |  +-file2    f
    |
    +-C          d
    |  |
    |  +-file3    f
    |
    +-file4      f
    admettons également que tu veuilles traiter tous les fichiers du dossier A et de tous ces sous-dossiers, et que le script de situe dans le dossier parent de A:
    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
    def listOfFilesIn(dirPath):
    #fonction retournant une liste de tous les fichiers contenu dans
    #dirPath ainsi que dans tous ses sous-dossiers
    	res=[]
    	for obj in os.listdir(dirPath):
    		if os.path.isdir(dirPath+'/'+obj):
    			res+=listOfFilesIn(dirPath+'/'+obj)
    		else:
    			res.append(dirPath+'/'+obj)
    	return res
     
    for file in listOfFilseIn('./A'):
            ...
            [traitement des fichiers]
            ...
    Toutefois, si il y a beaucoup de fichiers, il serait plus judicieux d'utiliser un generator (plus économe en mémoire), plutôt qu'une fonction retournant une liste...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def listOfFilesIn(dirPath):
    	for obj in os.listdir(dirPath):
    		if os.path.isdir(dirPath+'/'+obj):
    			for f in listOfFilesIn(dirPath+'/'+obj): yield f
    		else:
    			yield(dirPath+'/'+obj)
    Si il y a des exceptions, il est également plus judicieux, je trouve, de travailler sur les résultats produits, que depuis la fonction...

    EDIT: grilled

    EDIT2: ah oui! bien vu le os.isdir, j'men rappelais plus

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

Discussions similaires

  1. Avertissement à l'ouverture d'un dossier
    Par AT dans le forum Débuter
    Réponses: 2
    Dernier message: 15/11/2007, 15h18
  2. [FEDORA] Avoir une seule fênetre, après ouverture d'un dossier.
    Par rvfranck dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 20/06/2007, 12h20
  3. [WinXP SP2] Executable d'ouverture d'un dossier
    Par BizuR dans le forum Windows XP
    Réponses: 3
    Dernier message: 06/10/2006, 11h37
  4. ouverture d'un dossier a partir d'Access
    Par Kelly182 dans le forum Access
    Réponses: 4
    Dernier message: 02/08/2006, 14h08
  5. ouverture d'un dossier (folder)
    Par Lucifer83 dans le forum C++
    Réponses: 4
    Dernier message: 05/04/2006, 10h39

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