【问题标题】:Recursively enter each subdirectory of a directory in Python [duplicate]递归进入Python中目录的每个子目录[重复]
【发布时间】:2018-11-26 05:03:54
【问题描述】:

我是 Python 新手,我正在尝试编写一个函数,如果有所有文件,它应该只打印它们的名称,如果它是一个文件夹,它应该进入它并打印它的文件,它将能够进入一个文件夹中,如果这个文件夹中有一个文件夹,它也应该进去并这样做,直到什么都没有。目前我还没有找到深入的方法。有没有办法递归地做到这一点?由于某种原因,我应该如何处理我的代码并没有进入所有子目录。提前致谢

def list_files(startpath, d):
for root, dirs, files in os.walk(startpath):
    for f in files:
        print (f)
    for di in dirs:
        print (di)
        list_files(di, d + 1)

list_files(path, 0)

【问题讨论】:

  • 常规方法是创建一个函数在一个层次上处理一个文件夹,然后当你看到一个子文件夹时递归调用它。
  • 谢谢,但我希望我的函数能做到这一点,但由于某种原因它不是。或者我应该创建一个变量 path = root + '/' + dir 并且每次在其顶部添加一个新目录时将其添加到我的变量路径并将其传递给我的函数?
  • 我认为您不需要使用os.walk 进行递归调用。删除第二个 for 循环中的递归调用。

标签: python


【解决方案1】:

也许你可以检查这个答案:

Using os.walk() to recursively traverse directories in Python

它像这样使用 os.walk() 方法。

import os

# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk("."):
    path = root.split(os.sep)
print((len(path) - 1) * '---', os.path.basename(root))
    for file in files:
        print(len(path) * '---', file)

【讨论】:

  • 请不要复制/粘贴重复的答案。
  • 最初我尝试过,但它也没有进入我的所有目录
猜你喜欢
  • 1970-01-01
  • 2011-03-20
  • 2018-11-26
  • 2016-07-28
  • 2013-02-12
  • 2016-06-06
  • 2016-09-26
  • 2017-03-26
  • 1970-01-01
相关资源
最近更新 更多