Cette link utilise une méthode personnalisée, mais je veux juste voir s'il y a une seule méthode pour le faire en Python 2.6?Existe-t-il un moyen d'obtenir tous les répertoires mais pas les fichiers dans un répertoire en Python?
Répondre
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
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).
+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
Si modifié le code. ceci ne se répète pas ... – Stephan202
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.
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
Vous voulez dire os.path.isdir (os.path.join (répertoire, f)) au lieu de os.path.isfile (f) ... – Stephan202
La question était de trouver seulement les répertoires, pas seulement les fichiers (ce qui est un moyen bizarre, je suppose) – dbr