如何只计算目录中的文件?这将目录本身计算为一个文件:

len(glob.glob('*'))

当前回答

如果你想计算目录中的所有文件——包括子目录中的文件,最python的方法是:

import os

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

我们使用sum,它比显式地添加文件计数(等待时间)更快。

其他回答

简短而简单

import os
directory_path = '/home/xyz/'
No_of_files = len(os.listdir(directory_path))

很简单:

print(len([iq for iq in os.scandir('PATH')]))

它只是简单地计算目录中的文件数量,我使用了列表理解技术来遍历特定目录,返回所有文件。"len(返回列表)"返回文件数。

虽然我同意@DanielStutzbach提供的答案:os.listdir()将比使用glob.glob更有效。

然而,额外的精度,如果你想计算文件夹中特定文件的数量,你想使用len(glob.glob())。例如,如果你要计算你想要使用的文件夹中的所有pdf文件:

pdfCounter = len(glob.glob1(myPath,"*.pdf"))

我写的一个简单的实用函数,它使用os.scandir()而不是os.listdir()。

import os 

def count_files_in_dir(path: str) -> int:
    file_entries = [entry for entry in os.scandir(path) if entry.is_file()]

    return len(file_entries)

主要的好处是,不再需要os.path.is_file(),取而代之的是os.path.is_file()。DirEntry实例的is_file()也消除了os.path的需要。join(DIR, file_name)如其他答案所示。

Os.listdir()将比使用glob.glob更有效。要测试文件名是否为普通文件(而不是目录或其他实体),请使用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))])