如何用Python计算目录中的文件数量

371 投票
29 回答
701379 浏览
提问于 2025-04-15 21:33

我该怎么做才能只计算一个文件夹里的文件数量?因为现在的计算方式会把这个文件夹本身也算作一个文件:

len(glob.glob('*'))

29 个回答

86

对于所有类型的文件,包括子目录(Python 2):

import os

lst = os.listdir(directory) # your directory path
number_files = len(lst)
print number_files

仅限文件(不包括子目录):

import os

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

当然可以!请看下面的内容:

在编程中,很多时候我们需要让程序做一些重复的事情。为了避免每次都写一模一样的代码,我们可以使用“循环”。循环就像是一个指令,告诉程序重复执行某些操作,直到满足特定条件为止。

比如说,如果你想让程序打印数字1到10,你可以用循环来实现。这样,你只需要写一次打印的指令,程序就会自动帮你重复执行,直到打印完所有的数字。

另外,循环有很多种类型,比如“for循环”和“while循环”。“for循环”通常用来处理已知次数的重复,而“while循环”则是根据某个条件来决定是否继续执行。

总之,循环是编程中非常重要的一个概念,它能让我们的代码更加简洁、高效。

import os

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

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))])

撰写回答