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

时间:2013-11-02 22:04:29

标签: 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)

5 个答案:

答案 0 :(得分: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)

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

答案 1 :(得分:4)

我认为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)

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

答案 2 :(得分:3)

回答:

  

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

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

答案 3 :(得分:3)

尝试以下方法:

import os.path  
import glob  
folder = glob.glob("path/*")
len(folder)

答案 4 :(得分:1)

我猜您正在寻找os.walk。查看Python参考资料,它说:

  

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

     

通过从上到下遍历树来生成目录树中的文件名   或自下而上。对于以目录顶部为根的树中的每个目录   (包括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