Exemples de comment obtenir une liste des fichiers d'un dossier en utilisant python:
Table des matières
Avec la fonction listdir()
Avec python il est possible d'obtenir une liste de l'ensemble des fichiers situés dans un répertoire donné en utilsant os.listdir(). La fonction os.listdir() retourne une liste des fichiers et des répertoires situés dans le répertoire cible. Pour avoir uniquement les fichiers il suffit d'appliquer un simple filtre en utililant isfile() (voir). Illustration, supposons que le répertoire courant est composé comme ceci
dir01/
dir02/
fich01.txt
fich02.txt
fich02.txt
ou dir sont des répertoires et fich des fichiers. On a :
>>> import os
>>> list = os.listdir('.')
>>> print list
[dir01,dir02,fich01.txt,fich02.txt,fich03.txt]
Pour maintenant obtenir une liste des fichiers uniquement:
>>> FichList = [ f for f in os.listdir('.') if os.path.isfile(os.path.join('.',f)) ]
>>> print FichList
[fich01.txt,fich02.txt,fich03.txt]
Note: il est possible d'obtenir la liste des fichiers situés dans un répertoire quelconque en spécifiant le chemain complet il suffit de remplacer
>>> list = os.listdir('.')
par
>>> list = os.listdir('CheminDuRepCible')
Avec la fonction glob()
Exemple de cas: on veut obtenir une liste de tous les fichiers dans le dossier 'output' se terminant par '.hdf':
./output/
MYD06_L2.A2014038.2300.061.2018052102433.hdf
MYD06_L2.A2014033.1930.061.2018052042944.hdf
MYD06_L2.A2014046.2210.061.2018052112538.hdf
MYD06_L2.A2014058.2235.061.2018052141003.hdf
MYD06_L2.A2014037.2045.061.2018052094723.hdf
MYD06_L2.A2014054.2125.061.2018052131042.hdf
MYD06_L2.A2014034.2015.061.2018052062330.hdf
MYD06_L2.A2014059.2010.061.2018052140044.hdf
.
.
.
Pour cela il existe le module python glob:
import glob
path_to_target = './outputs/modis/myd06/'
path_to_file_list = glob.glob(path_to_target + '*hdf' )
for path_to_file in path_to_file_list:
print(path_to_file)
donne
./outputs/modis/myd06/MYD06_L2.A2014038.2300.061.2018052102433.hdf
./outputs/modis/myd06/MYD06_L2.A2014033.1930.061.2018052042944.hdf
./outputs/modis/myd06/MYD06_L2.A2014046.2210.061.2018052112538.hdf
./outputs/modis/myd06/MYD06_L2.A2014058.2235.061.2018052141003.hdf
./outputs/modis/myd06/MYD06_L2.A2014037.2045.061.2018052094723.hdf
./outputs/modis/myd06/MYD06_L2.A2014054.2125.061.2018052131042.hdf
./outputs/modis/myd06/MYD06_L2.A2014034.2015.061.2018052062330.hdf
./outputs/modis/myd06/MYD06_L2.A2014059.2010.061.2018052140044.hdf
.
.
.
Maintenant pour créer une liste avec les noms de fichiers uniquement, on peut utiliser les list comprehensions de python:
file_list = [i.split('/')[-1] for i in path_to_file_list]
print(file_list)
donne
['MYD06_L2.A2014038.2300.061.2018052102433.hdf', 'MYD06_L2.A2014033.1930.061.2018052042944.hdf', 'MYD06_L2.A2014046.2210.061.2018052112538.hdf', 'MYD06_L2.A2014058.2235.061.2018052141003.hdf', 'MYD06_L2.A2014037.2045.061.2018052094723.hdf', ... ]
Avec la fonction walk()
Avec python on peut facilement obtenir l'ensemble des fichiers et/ou des dossiers d'un répertoire en passant par la fonction walk du module os. Considérons la structure suivante en exemple:
folder/
abcd.txt
data.txt
record.txt
sub_directory/
data.txt
folder_3/
Pour obtenir la liste des fichiers dans le dossier folder on peut procéder comme suit:
>>> import os
>>> for path, subdirs, files in os.walk('folder'):
... for name in files:
... print(os.path.join(path, name))
...
folder/abcd.txt
folder/data.txt
folder/record.txt
folder/sub_directory/data.txt
Références
Liens | Site |
---|---|
os.listdir() | python doc |
How to list all files of a directory in Python | stackoverflow |
Calling an external command in Python | stackoverflow |
glob | docs.python.org |
List Comprehensions in Python | pythonforbeginners.com |
os.walk | python doc |
Python list directory, subdirectory, and files | stackoverflow |