使用lambda循环构建返回列表



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

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循环返回结果?谢谢。

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

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

最新更新