Wie man mit Python die Anzahl der Dateien in einem Verzeichnis zählt

Ich muss die Anzahl der Dateien in einem Verzeichnis mit Python zählen.

Ich denke, der einfachste Weg ist len(glob.glob('*')), aber das zählt auch das Verzeichnis selbst als eine Datei.

Gibt es eine Möglichkeit, nur die Dateien in einem Verzeichnis zu zählen?

Lösung

os.listdir() wird etwas effizienter sein als die Verwendung von glob.glob. Um zu testen, ob ein Dateiname eine gewöhnliche Datei ist (und nicht ein Verzeichnis oder eine andere Entität), verwenden Sie os.path.isfile():

import os, os.path

# simple version for working with CWD
print len([name for name in os.listdir('.') if os.path.isfile(name)])

# path joining version for other paths
DIR = '/tmp'
print len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])
Kommentare (7)

Dies verwendet os.listdir und funktioniert für jedes Verzeichnis:

import os
directory = 'mydirpath'

number_of_files = len([item for item in os.listdir(directory) if os.path.isfile(os.path.join(directory, item))])

dies kann mit einem Generator vereinfacht und ein wenig schneller gemacht werden mit:

import os
isfile = os.path.isfile
join = os.path.join

directory = 'mydirpath'
number_of_files = sum(1 for item in os.listdir(directory) if isfile(join(directory, item)))
Kommentare (0)
def count_em(valid_path):
   x = 0
   for root, dirs, files in os.walk(valid_path):
       for f in files:
            x = x+1
print "There are", x, "files in this directory."
return x

Entnommen aus diesem Beitrag

Kommentare (1)