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

时间:2014-04-13 05:17:50

标签: python

我想完全扫描目录中的子目录(目录或文件)......

我知道os.walk()解决方案,但我想知道如何使用常规循环实现这一点,是否可能?

我的意思是:

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

   ...

但是上面的代码只是深入到目录中,就像你手动编写的for循环一样多,这似乎是不完美和奇怪的。

我问这个问题,知道是否有任何技巧(除了内置函数)递归到目录的最深层文件...

1 个答案:

答案 0 :(得分: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

如果您从非目录文件中收集信息(而不是像上面那样只打印它们的名称),您可能需要对递归调用的返回值执行某些操作。细节将取决于你究竟在做什么。