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 :

Rechercher un fichier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 41
    Par défaut Rechercher un fichier
    Bonjour,
    je voulais savoir si il existait un module ou une syntaxe pour rechercher un fichier dans un répertoire donné, par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    search('Fichier.txt', 'C:\Doc\)
    J'ai déjà cherché dans os mais je n'ai pas trouvé...

    Quelqu'un pourrait-il m'aider?

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> for f in (f for f in os.listdir("C:\doc") if f=="Fichier.txt"):
    ...     print f
    ...
    Fichier.txt
    >>>
    @+

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 41
    Par défaut
    L'ennui c'est que ce code ne cherche pas dans les sous-dossiers...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut
    Citation Envoyé par Gui310 Voir le message
    L'ennui c'est que ce code ne cherche pas dans les sous-dossiers...
    Pour cela, regarde os.walk.

    Tu peux aussi regarder glob.glob, qui est + restrictif, tu as besoin de savoir d'avance à quelle profondeur dans l'arborescence ton fichier se trouve.

  5. #5
    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,

    Voilà un code vite fait qui renvoie le chemin de la 1ère occurence du fichier cherché dans une arborescence, ou une chaine vide s'il n'y est pas:

    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
     
    import os
    def cherchefichier(fichier, rep):
     
        # recherche du contenu du répertoire rep (fichiers et sous-répertoires)
        entrees = os.listdir(rep)
     
        # traitement des fichiers du répertoire
        for entree in entrees:
            if (not os.path.isdir(os.path.join(rep, entree))) and (entree==fichier):
                return rep
     
        # traitement récursif des sous-répertoires de rep
        for entree in entrees:
            rep2 = os.path.join(rep, entree)
            if os.path.isdir(rep2):
                chemin = cherchefichier(fichier, rep2)
                if chemin!="":
                    return chemin
     
        # si pas trouvé, renvoie une chaine vide
        return ""
    Exemple: recherche du fichier cp850.py dans le répertoire et les sous-répertoires de c:\python26:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    rep = u"C:\\Python26"
     
    fichier = u"cp850.py"
    chemin = cherchefichier(fichier,rep)
    if chemin!="":
        print chemin
    else:
        print "pas trouvé"
    Ce qui renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Python26\Lib\encodings
    Ce qui est correct. Par contre, avec fichier="nimportequoi.py" dans le même répertoire, cela renvoie: "pas trouvé".

    A noter que la fonction ne cherche que les fichiers dont le nom est donné, et pas les sous-répertoires qui pourraient avoir le même nom.

    En modifiant le code, on pourrait, bien sûr, renvoyer non pas le 1er chemin trouvé, mais tous les chemins si le fichier est trouvé plusieurs fois.

    Tyrtamos

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 41
    Par défaut
    D'accord, un grand merci à vous!

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Citation Envoyé par Gui310 Voir le message
    L'ennui c'est que ce code ne cherche pas dans les sous-dossiers...
    Ce n'étais pas dans le texte

    A lire pour compléter le sujet il me semble.

    @+

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

Discussions similaires

  1. [Système][fichier] recherche de fichier dans tout le disque dur
    Par helonear dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 15/12/2010, 10h43
  2. Recherche dans fichiers
    Par Tchinkatchuk dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2005, 10h32
  3. Réponses: 14
    Dernier message: 25/10/2004, 21h33
  4. batch de recherche de fichier ...
    Par Félia dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2004, 15h54
  5. Recherche support fichier
    Par sydiop dans le forum Informix
    Réponses: 5
    Dernier message: 18/03/2004, 10h15

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