从带有lambda的循环构建的返回列表

时间:2016-08-22 14:52:17

标签: python python-2.7

我有一个函数可以返回给定文件夹中的文件和文件夹列表(使用recurse并只获取文件选项),或者如果给定路径不是文件夹,则只返回列表中的文件:

def path_to_list(path, onlyFiles = False, recurse = False):
    if os.path.isdir(path):
        if onlyFiles:
            if recurse:
                result = []
                for dirs in list(os.walk(path)):
                    result.append(dirs[2])
                return result
            else:
                return next(os.walk(path))[2]
    else:
        return list(os.walk(path)) if recurse else next(os.walk(path))

    return [path]

试图缩短这一部分:

result = []
for dirs in list(os.walk(path)):
    result.append(dirs[2])
return result

我尝试使用具有多种语法的lambda但没有取得任何成功。如何直接从for循环返回结果?感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式返回目录列表:

return [dir for _, _, dir in list(os.walk(path))]