3468 votes

Comment lister tous les fichiers d'un répertoire en Python

Comment puis-je liste tous les fichiers d'un répertoire dans le répertoire de python et de les ajouter à une liste?

4617voto

pycruft Points 8095

os.listdir() , vous obtiendrez tout ce qui est dans un répertoire de fichiers et de répertoires.

Si vous voulez juste des fichiers, vous pouvez filtrer cette aide d' os.path:

from os import listdir
from os.path import isfile, join
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]

ou vous pouvez utiliser os.walk() ce qui engendrera des 2 listes pour chaque répertoire, il les visites - les diviser en fichiers et répertoires pour vous. Si vous voulez seulement le haut dir, vous pouvez simplement briser la première fois, il rendements

from os import walk

f = []
for (dirpath, dirnames, filenames) in walk(mypath):
    f.extend(filenames)
    break

Et enfin, comme cet exemple le montre, l'ajout d'une liste à l'autre, vous pouvez utiliser .extend() ou

>>> q = [1,2,3]
>>> w = [4,5,6]
>>> q = q + w
>>> q
[1,2,3,4,5,6]

Personnellement, je préfère .extend()

1820voto

adamk Points 9991

Je préfère utiliser l' glob module, comme c'est le pattern matching et de l'expansion.

import glob
print glob.glob("/home/adam/*.txt")

Vous obtiendrez une liste avec la liste des fichiers:

['/home/adam/file1.txt', '/home/adam/file2.txt', .... ]

862voto

sepp2k Points 157757
os.listdir("somedirectory")

retourne une liste de tous les fichiers et répertoires dans "somedirectory".

165voto

Remi Points 4223

onliner pour obtenir uniquement la liste des fichiers (pas de sous-répertoires):

filenames = next(os.walk(path))[2]

ou chemins absolus:

paths = [os.path.join(path,fn) for fn in next(os.walk(path))[2]]

136voto

Johnny Points 126

Obtenir le chemin Complet des Fichiers D'un Répertoire et Tous Ses sous-Répertoires

import os

def get_filepaths(directory):
    """
    This function will generate the file names in a directory 
    tree by walking the tree either top-down or bottom-up. For each 
    directory in the tree rooted at directory top (including top itself), 
    it yields a 3-tuple (dirpath, dirnames, filenames).
    """
    file_paths = []  # List which will store all of the full filepaths.

    # Walk the tree.
    for root, directories, files in os.walk(directory):
        for filename in files:
            # Join the two strings in order to form the full filepath.
            filepath = os.path.join(root, filename)
            file_paths.append(filepath)  # Add it to the list.

    return file_paths  # Self-explanatory.

# Run the above function and store its results in a variable.   
full_file_paths = get_filepaths("/Users/johnny/Desktop/TEST")

  • Le chemin que j'ai fournis dans la fonction ci-dessus contenues 3 fichiers - deux d'entre eux dans le répertoire racine, et un autre dans un sous-dossier appelé "sous-dossier." Vous pouvez maintenant faire des choses comme:
  • print full_file_paths ce qui permet d'imprimer la liste:

    • ['/Users/johnny/Desktop/TEST/file1.txt', '/Users/johnny/Desktop/TEST/file2.txt', '/Users/johnny/Desktop/TEST/SUBFOLDER/file3.dat']

Si vous le souhaitez, vous pouvez ouvrir et lire le contenu, ou de se concentrer uniquement sur les fichiers avec l'extension ".dat" comme dans le code ci-dessous:

for f in full_file_paths:

  if f.endswith(".dat"):

    print f

/Users/johnny/Desktop/TEST/SUBFOLDER/file3.dat

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X