2013-06-04 3 views

risposta

3

Basta aggiungere un elif dichiarazione che si prende cura delle directory:

def fileCount(folder): 
    "count the number of files in a directory" 

    count = 0 

    for filename in os.listdir(folder): 
     path = os.path.join(folder, filename) 

     if os.path.isfile(path): 
      count += 1 
     elif os.path.isfolder(path): 
      count += fileCount(path) 

    return count 
+1

@OmarSolis Ciò che non è ricorsiva di questo? – squiguy

+0

@OmarSolis: cos'è la ricorsione? – Blender

34

One - fodera

import os 
cpt = sum([len(files) for r, d, files in os.walk("G:\CS\PYTHONPROJECTS")]) 
+0

Puoi spiegare perché hai bisogno della funzione somma? Perché len (file) non dovrebbe essere sufficiente? –

+4

@GWarner Esistono più set di file (da ciascuna sottodirectory) restituiti da os.walk. È necessario sommare la lunghezza di ciascun set per ottenere la quantità di file. Se si usa len (file), si ottiene una lista in cui ogni elemento è il numero di file nella sua sottodirectory associata. –

Problemi correlati