Bonjour,
je voulais savoir si il existait un module ou une syntaxe pour rechercher un fichier dans un répertoire donné, par ex:
J'ai déjà cherché dans os mais je n'ai pas trouvé...Code:search('Fichier.txt', 'C:\Doc\)
Quelqu'un pourrait-il m'aider?
Version imprimable
Bonjour,
je voulais savoir si il existait un module ou une syntaxe pour rechercher un fichier dans un répertoire donné, par ex:
J'ai déjà cherché dans os mais je n'ai pas trouvé...Code:search('Fichier.txt', 'C:\Doc\)
Quelqu'un pourrait-il m'aider?
Bonjour,
@+Code:
1
2
3
4
5 >>> for f in (f for f in os.listdir("C:\doc") if f=="Fichier.txt"): ... print f ... Fichier.txt >>>
L'ennui c'est que ce code ne cherche pas dans les sous-dossiers...
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:
Exemple: recherche du fichier cp850.py dans le répertoire et les sous-répertoires de c:\python26:Code:
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 ""
Ce qui renvoie:Code:
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 est correct. Par contre, avec fichier="nimportequoi.py" dans le même répertoire, cela renvoie: "pas trouvé".Code:
1
2 C:\Python26\Lib\encodings
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
D'accord, un grand merci à vous!
Bonjour,
Ce n'étais pas dans le texte ;)
A lire pour compléter le sujet il me semble.
@+