5

我有一个文件夹和子文件夹的目录。我想要做的是获取文件夹中子文件夹的数量,并使用 matplotlib 将它们绘制在散点图上。我有获取文件数量的代码,但是如何获取文件夹中子文件夹的数量。这可能有一个简单的答案,但我是 Python 的新手。任何帮助表示赞赏。

这是我到目前为止获取文件数量的代码:

import os
import matplotlib.pyplot as plt

def fcount(path):
    count1 = 0
    for f in os.listdir(path):
        if os.path.isfile(os.path.join(path, f)):
            count1 += 1

    return count1

path = "/Desktop/lay"
print fcount(path)
4

5 回答 5

10
import os

def fcount(path, map = {}):
  count = 0
  for f in os.listdir(path):
    child = os.path.join(path, f)
    if os.path.isdir(child):
      child_count = fcount(child, map)
      count += child_count + 1 # unless include self
  map[path] = count
  return count

path = "/Desktop/lay"
map = {}
print fcount(path, map)

这是一个完整的实现和测试。它返回没有当前文件夹的子文件夹的数量。如果要更改,则必须将 + 1 放在最后一行而不是注释所在的位置。

于 2013-11-02T23:17:19.397 回答
5

我认为 os.walk 可能是您正在寻找的东西:

import os

def fcount(path):
    count1 = 0
    for root, dirs, files in os.walk(path):
            count1 += len(dirs)

    return count1

path = "/home/"
print fcount(path)

这将为您提供给定路径中的目录数。

于 2013-11-02T22:41:02.313 回答
4

试试下面的食谱:

import os.path  
import glob  
folder = glob.glob("path/*")
len(folder)
于 2016-06-04T11:59:28.883 回答
3

回答:

如何获取文件夹中的子文件夹数量

您可以使用os.path.isdir类似的功能os.path.isfile来计算目录。

于 2013-11-02T22:11:40.443 回答
1

我猜你正在寻找os.walk. 查看 Python 参考,它说:

os.walk(top, topdown=True, onerror=None, followlinks=False)

通过自上而下或自下而上遍历树,在目录树中生成文件名。对于以目录 top 为根的树中的每个目录(包括 top 本身),它产生一个 3 元组 ( dirpath, dirnames, filenames)。

因此,您可以尝试这样做以仅获取目录:

for root, dirs, files in os.walk('/usr/bin'):
    for name in dirs:
        print os.path.join(root, name)
        count += 1
于 2013-11-02T22:40:15.963 回答