2009-04-08 4 views

Répondre

5

Il n'y a pas une fonction intégrée à la liste des fichiers seulement, mais il est assez facile de définir en quelques lignes:

def listfiles(directory): 
    return [f for f in os.listdir(directory) 
       if os.path.isdir(os.path.join(directory, f))] 

EDIT: fixe, grâce Stephan202

+0

Vous voulez dire os.path.isdir (os.path.join (répertoire, f)) au lieu de os.path.isfile (f) ... – Stephan202

+0

La question était de trouver seulement les répertoires, pas seulement les fichiers (ce qui est un moyen bizarre, je suppose) – dbr

3

Si a_directory est le répertoire que vous voulez inspecter, puis:

next(f 1 for f in os.walk(a_directory))

De la référence :

Générer les noms de fichiers dans une arborescence de répertoires en marchant l'arbre de haut en bas ou de bas en haut. Pour chaque répertoire de l'arborescence racine du répertoire top (y compris le sommet lui-même), il donne un triplet (dirpath, dirnames, noms de fichiers).

+0

+1: Bien, vous voudrez peut-être rompre et ne pas descendre récursivement dans les sous-répertoires. Personnellement, je préférerais appeler explicitement os.listdir et os.isdir. – Pankrat

+0

Si modifié le code. ceci ne se répète pas ... – Stephan202

1

Je ne crois pas qu'il y en ait. Puisque les répertoires sont aussi des fichiers, vous devez demander tous les fichiers, puis demandez à chacun s'il s'agit d'un répertoire.

0
def listdirs(path): 
    ret = [] 
    for cur_name in os.listdir(path): 
     full_path = os.path.join(path, cur_name) 
     if os.path.isdir(full_path): 
      ret.append(cur_name) 
    return ret 

onlydirs = listdir("/tmp/") 
print onlydirs 

..ou comme une liste-compréhension ..

path = "/tmp/" 
onlydirs = [x for x in os.listdir(path) if os.path.isdir(os.path.join(path, x))] 
print onlydirs 
Questions connexes