如何使用Python操作系统获取子文件夹和文件夹的数量?

mik*_*ez1 4 python

我有一个文件夹和子文件夹的目录.我要做的是获取文件夹中的子文件夹数量,并使用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)
Run Code Online (Sandbox Code Playgroud)

Dan*_*yel 8

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)
Run Code Online (Sandbox Code Playgroud)

这是一个完整的实现并经过测试.它返回没有当前文件夹的子文件夹数.如果你想改变它,你必须把+ 1放在最后一行而不是注释的位置.


dab*_*lox 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)
Run Code Online (Sandbox Code Playgroud)

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

  • `count1 += len(dirs)` 会更有效。你不是在隐藏 `path` 变量吗? (3认同)