递归文件走仅向下深入一个深度

时间:2017-12-02 21:31:51

标签: python

我正在尝试为可以沿着目录走下去并返回所有文件的作业创建代码

我在使用多级文件夹时遇到问题,例如

folder1
---> folder2
-------> foo.txt的

我有以下代码

def find_larger(path, max_n_results=10):
    files = []
    print(path)
    path_files = os.listdir(path)
    for file in path_files:
        if os.path.isdir(file):
            files += find_larger(os.path.join(path, file))
        files.append(file)
    return files

print(find_larger('.'))

但是,如果我要运行该代码,我会得到以下结果

[folder1,folder2]

我已经完成了这是一个调试器,程序没有检测到第二个目录实际上是一个目录。

如何让程序一直走过目录。

注意,我不允许使用os.walk

1 个答案:

答案 0 :(得分:5)

os.path.isdir()采用完整路径,您只给它相对名称。首先创建路径,然后测试:

def find_larger(path, max_n_results=10):
    files = []
    print(path)
    path_files = os.listdir(path)
    for file in path_files:
        subpath = os.path.join(path, file)
        if os.path.isdir(subpath):
            files += find_larger(subpath)
        files.append(subpath)
    return files

但是,你在这里重新发明一个轮子,只需使用os.walk() function列出目录内容:

def find_larger(path, max_n_results=10):
    files = []
    print(path)
    for dirpath, dirnames, filenames in os.walk(path):
        files += (os.join(dirpath, filename) for filename in filenames)
    return files