0
votes

Comment créer une liste Python avec le numéro de fichier dans chaque sous-répertoire d'un répertoire

J'ai un répertoire principal (racine) qui comte 6 sous-répertoires sous-répertoires. Je voudrais compter le nombre de fichiers présents dans chaque sous-répertoire et ajouter à une simple liste de python .

Pour ce résultat: MyList = [497643, 5976, 3698, 12, 456, 745]

Je suis bloqué sur ce code: xxx

mon essayer de remplir la liste ne fonctionne pas et je suis dramatique à mon meilleur ...

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!

Merci pour votre aide

Abel


2 commentaires

Est-ce que cela répond à votre question? Nombre de fichiers dans le répertoire et sous-répertoire


Utilisation de OS.WALK () aidera beaucoup. Il percent récursivement des sous-répertoires.


4 Réponses :


0
votes

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))


3 commentaires

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) IN 11 #fill une liste avec chaque sous-répertoire numéro d'éléments 12 pour sub_dir dans DIRS: ---> 13 TEMP = OS .Listdir (Sub_Dir) 14 LIST = DIRS.AppEND (LEN (TEMP)) FilenotFoundERror: [WinError 3] Le Chemin d'Accès Spécifié est introuvable: 'Amaryllidaceae'


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



0
votes

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)


0 commentaires


0
votes

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]


2 commentaires

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 car vous devez commencer quelque part. Vous pouvez laisser cela pour être "." pour le répertoire actuel. Ensuite, os.walk fera le travail pour vous.