366 Stimmen

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

Wie zähle ich nur die Dateien in einem Verzeichnis? Hier wird das Verzeichnis selbst als Datei gezählt:

len(glob.glob('*'))

413voto

Daniel Stutzbach Punkte 69710

os.listdir() ist etwas effizienter als die Verwendung von glob.glob . Um zu prüfen, 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))])

179voto

Luke Punkte 1772
import os

_, _, files = next(os.walk("/usr/lib"))
file_count = len(files)

83voto

Guillermo Pereira Punkte 1659

Für alle Arten von Dateien, einschließlich Unterverzeichnissen:

import os

list = os.listdir(dir) # dir is your directory path
number_files = len(list)
print number_files

Nur Dateien (Vermeidung von Unterverzeichnissen):

import os

onlyfiles = next(os.walk(dir))[2] #dir is your directory path as string
print len(onlyfiles)

52voto

ngeek Punkte 7413

An dieser Stelle ist fnmatch sehr nützlich:

import fnmatch

print len(fnmatch.filter(os.listdir(dirpath), '*.txt'))

Weitere Einzelheiten: http://docs.python.org/2/library/fnmatch.html

34voto

Mr_and_Mrs_D Punkte 29254

Wenn Sie alle Dateien im Verzeichnis zählen wollen - einschließlich der Dateien in Unterverzeichnissen -, ist der pythonischste Weg:

import os

file_count = sum(len(files) for _, _, files in os.walk(r'C:\Dropbox'))
print(file_count)

Wir verwenden eine Summe, die schneller ist als die explizite Addition der Dateizahlen (Zeitangaben stehen noch aus)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X