J'ai un répertoire principal (racine) qui comte 6 sous-répertoires sous-répertoires.
Je voudrais Pour ce résultat: MyList = [497643, 5976, 3698, 12, 456, 745] p> Je suis bloqué sur ce code: p> mon essayer de remplir la liste ne fonctionne pas et je suis dramatique à mon meilleur ... p> Trouver un moyen de créer un moyen d'itération du sous-répertoire d'un répertoire principal et de remplir une liste avec une fonction appliquée sur chaque sous-répertoire Sky roquette la vitesse de mon projet de science de données réelle! P> Merci pour votre aide P> Abel P> P>
4 Réponses :
Vous devez utiliser OS.ListDir sur chaque sous-répertoire. Le code actuel prend simplement la longueur d'un filepath.
import os, sys list = [] # Open a file path = "c://root" dirs = os.listdir( path ) # This would print all the files and directories for file in dirs: print (file) #fill a list with each sub directory number of elements for sub_dir in dirs: temp = os.listdir(sub_dir) list = dirs.append(len(temp))
Si vous avez des sous-répertoires dans vos sous-répertoires, vous devrez utiliser la solution liée à @sushanth.
`` `` `FilenotfoundError Traceback (appel le plus récent)
J'ai cette erreur avec cette ligne de code ajoutée. Considérant 'Amaryllidaceae' est le premier sous-répertoire. Je travaille sur le cahier Jupyter
Vous étiez presque là:
import os, sys list = [] # Open a file path = "c://root" dirs = os.listdir(path) # This would print all the files and directories for file in dirs: print(file) for sub_dir in dirs: if os.path.isdir(sub_dir): list.append(len(os.listdir(os.path.join(path, sub_dir)))) print(list)
Vous pouvez utiliser OS.PATH.FILE < / a> et OS.Path.ISDIR A > à l'aide de la boucle pour la boucle p>
Avec ces deux solutions, j'ai ce message d'erreur: 7 Liste = [] ----> 8 res = [LIGN (Liste (carte (OS.PATH.FILE, OS.LISTDIR (OS.PATH.JOIN (PATH, NOM )))))) pour nom dans Os.Listdir (chemin) Si OS.Path.ISDIR (OS.PATH.JOIN (chemin, nom))] 9 Imprimer (res) TypeError: "liste 'objet n'est pas appelable
Vous avez utilisé list code> en tant que nom de variable quelque part dans votre code, c'est pourquoi vous obtenez l'erreur. N'utilisez pas cette liste
= [] code> changez le nom à quelque chose d'autre que cela fonctionnera
Au fur et à mesure de la variante, vous pouvez également utiliser le module GLOB code> pour cela et d'autres tâches associées.
J'ai créé un répertoire
test code> contenant 3 sous-répertoires
l code>,
m code> et
k code> contenant 3 fichiers de test chacun.
[3, 3, 3]
Votre solution est proche d'être mieux pour mon problème :) Il crée deux liste dans une liste: le premier avec le chemin complet + Nom des fichiers et la seconde avec le numéro de fichier dans chaque répertoire. J'ai juste besoin de la deuxième liste et je sais comment supprimer la première liste. Mais comment créer directement une liste simple WTIH juste le nombre de fichiers dans chaque sous-répertoire? (Sans chemin et répertoire)
@Abel j'ai mis à jour le code. Vous avez besoin de chemin code> car vous devez commencer quelque part. Vous pouvez laisser cela pour être
"." Code> pour le répertoire actuel. Ensuite,
os.walk code> fera le travail pour vous.
Est-ce que cela répond à votre question? Nombre de fichiers dans le répertoire et sous-répertoire
Utilisation de
OS.WALK () code> aidera beaucoup. Il percent récursivement des sous-répertoires.