关于python:如何获取包含子目录的目录中特定文件的总数?

How to get the total number of specific files in a directory containing subdirectories?

本问题已经有最佳答案,请猛点这里访问。

下面的python代码计算我在一个包含多个子目录的目录中拥有的文件总数。结果将打印子目录名及其包含的文件数。

如何修改此内容,以便:

  • 它只查找特定的文件扩展名(即"*.shp")。
  • 它提供每个子目录中的".shp"文件数和所有".shp"文件的最终计数。

代码如下:

1
2
3
4
5
6
import os
path = 'path/to/directory'
folders = ([name for name in os.listdir(path)])
for folder in folders:
    contents = os.listdir(os.path.join(path,folder))
    print(folder,len(contents))


可以对字符串使用.endswith()函数。这对于识别扩展非常方便。您可以通过循环查找这些文件的内容,然后如下所示。

1
2
3
4
5
targets = []
for i in contents:
    if i.endswith(extension):
        targets.append(i)
print(folder, len(contents))


感谢您的评论和回答,这是我使用的代码(如果太接近,请随意将我的问题标记为链接问题的副本):

1
2
3
4
5
6
7
8
9
10
11
12
import os
path = 'path/to/directory'
folders = ([name for name in os.listdir(path)])
targets = []
for folder in folders:
    contents = os.listdir(os.path.join(path,folder))
    for i in contents:
        if i.endswith('.shp'):
            targets.append(i)
    print(folder, len(contents))

print"Total number of files =" + str(len(targets))