在Python中递归扫描文件和目录

0 投票
1 回答
1893 浏览
提问于 2025-04-18 02:33

我想要完全扫描一个文件夹,看看里面有什么子文件或子文件夹……

我知道可以用 os.walk() 这个方法,但我想知道用普通的循环怎么做到,是否可行?

我的意思是,如果:

for item in directory :
    if os.path.isdir(item)

   ...

但是上面的代码只能根据你手动写的循环层数,深入到文件夹的不同层级,这样看起来不太完美,也有点奇怪。

我问这个问题是想知道有没有什么技巧(除了内置函数)可以递归地深入到文件夹里的最深处……

1 个回答

0

当然,你可以写一个递归函数来检查所有的文件:

def rec_walk(dir):
    contents = os.listdir(dir) # read the contents of dir
    for item in contents:      # loop over those contents
        if os.path.isdir(item):
            rec_walk(item)     # recurse on subdirectories
        else:
            print(item)        # do something else with non-directory items

如果你想从非目录文件中收集信息(而不仅仅是像我上面那样打印它们的名字),你可能需要处理一下递归调用的返回值。具体的做法会根据你想要做的事情而有所不同。

撰写回答