【问题标题】:Python counting number of files and directories recursivelyPython递归地计算文件和目录的数量
【发布时间】:2021-09-09 15:46:54
【问题描述】:

我正在尝试获取目录中文件和文件夹的数量。我找到了 os.walk() ,它只对根目录做了什么。我尝试了以下但我需要创建两个列表并检查它是文件还是文件夹并计算它们。

pathlib.Path(src).glob('**/*')

我找不到一种简单有效的方法来完成这样的简单任务。我觉得我在这里遗漏了一些东西。有什么建议吗?

【问题讨论】:

  • os.walk 有效。你尝试了什么?
  • 我用x, y, z = os.walk(src) 尝试过,但我得到ValueError: too many values to unpack (expected 3) 如果我用next(walk(src)) 使用它,我需要迭代所有以获得一个总数。如果我错了,请纠正我。

标签: python recursion io


【解决方案1】:
lst = [*map(lambda x: x.is_dir(), pathlib.Path(src).rglob('*'))]
sum(lst), len(lst) - sum(lst)  # number of dirs, number of files

这是你要找的吗?

【讨论】:

    【解决方案2】:

    os.walk 是一个生成器,你需要迭代它的结果:

    {p: {"directories": len(directories),
         "files": len(files)}
     for p, directories, files in os.walk(root_dir)}
    

    【讨论】:

      【解决方案3】:

      您可以使用os.walk()。它递归地迭代一个目录,并为每次迭代返回一个目录路径以及该路径上的文件和目录的数量。把它们加起来:

      import os
      
      dirs_cnt = 0
      files_cnt = 0
      
      for path,dirs,files in os.walk('.'):  # Current directory
          dirs_cnt += len(dirs)
          files_cnt += len(files)
      
      print(f'Total: dirs={dirs_cnt} files={files_cnt}')
      

      【讨论】:

        猜你喜欢
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        • 2012-02-27
        • 2014-03-30
        • 2016-02-15
        • 2021-03-05
        • 2020-10-07
        相关资源
        最近更新 更多