Wie zähle ich nur die Dateien in einem Verzeichnis? Hier wird das Verzeichnis selbst als Datei gezählt:
len(glob.glob('*'))
Wie zähle ich nur die Dateien in einem Verzeichnis? Hier wird das Verzeichnis selbst als Datei gezählt:
len(glob.glob('*'))
Diese 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)))
Ich stimme zwar mit der Antwort von @DanielStutzbach überein: os.listdir()
ist etwas effizienter als die Verwendung von glob.glob
.
Wenn Sie jedoch die Anzahl bestimmter Dateien in einem Ordner zählen möchten, sollten Sie die folgende Option verwenden len(glob.glob())
. Wenn Sie zum Beispiel alle PDF-Dateien in einem Ordner zählen, den Sie verwenden möchten:
pdfCounter = len(glob.glob1(myPath,"*.pdf"))
Dies ist eine einfache Lösung, die die Anzahl der Dateien in einem Verzeichnis mit Unterordnern zählt. Sie könnte sich als nützlich erweisen:
import os
from pathlib import Path
def count_files(rootdir):
'''counts the number of files in each subfolder in a directory'''
for path in pathlib.Path(rootdir).iterdir():
if path.is_dir():
print("There are " + str(len([name for name in os.listdir(path) \
if os.path.isfile(os.path.join(path, name))])) + " files in " + \
str(path.name))
count_files(data_dir) # data_dir is the directory you want files counted.
Sie sollten eine ähnliche Ausgabe wie diese erhalten (natürlich mit geänderten Platzhaltern):
There are {number of files} files in {name of sub-folder1}
There are {number of files} files in {name of sub-folder2}
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 diese Stelle
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.