【发布时间】: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