Comment créer une liste des fichiers d'un dossier se terminant avec une extension donnée (.txt, .avi, .docx, etc) sous python ?

Published: 21 mai 2019

DMCA.com Protection Status

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', ... ]

Références

Liens Site
glob docs.python.org
List Comprehensions in Python pythonforbeginners.com
os.listdir() python doc
How to list all files of a directory in Python stackoverflow
Calling an external command in Python stackoverflow