有没有办法在Python中递归搜索目录,子目录和文件而不使用os.walk,glob或fnmatch?

时间:2016-05-29 17:22:19

标签: python python-3.x recursion directory

我知道使用这些模块会让生活变得更轻松但是当我学习Python时,我希望能够巩固基础,然后进入快捷方式。这样,当出现更大的问题时,我可以分析并解决它。

我希望能够在1个目录中返回总文件夹和文件的数量,例如目录F:\

我想出了:

import os

def fcount(path):
  count = 0
  for f in os.listdir(path):
    file = os.path.join(path, f)
    if os.path.isdir(file):
      file_count = fcount(file)
      count += file_count + 1

  for f in os.listdir(path):
    if os.path.isfile(os.path.join(path, f)):
      count += 1
  return count

path = 'F:\\'
print(fcount(path))

这是最终答案。这将为您提供指定目录中的子目录和文件的总数。

2 个答案:

答案 0 :(得分:0)

如果不使用os.walk或使用相同内容的内容,则无法获取目录下的所有文件的数量(递归)。

此信息需要此作业,您无法以其他方式执行此操作。显然,还有其他库在做一些类似的工作但有一些变化,但重点是主要是相同的事情。

答案 1 :(得分:0)

这就像os.walk那样做的代码。这是手动递归。

edgesForExtendedLayout

注意:最初在OP中,没有第二个循环。