为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Python 3使用map()和filter()函数而不是for循环来删除空目录?

如何使用Python 3使用map()和filter()函数而不是for循环来删除空目录?

MMTTMM 2023-09-19 17:18:27
我正在尝试使用 Python 3 创建一个函数来删除指定目录中的空目录。不幸的是,我的尝试没有成功,所以我非常感谢任何帮助、指导和建议。我试图让该函数执行的操作的示例:前...-folder/    |-empty1/    |-empty2/    |-not_empty1/        |-file    |-not_empty2/        |-file后...-folder/    |-not_empty1/        |-file    |-not_empty2/        |-file这是我确信会起作用但没有起作用的:# folder - absolute path to directory that may contain empty directoriesdef cleanup(folder):    from os import listdir, rmdir, path    ls = listdir(folder)    ls = map(lambda f: path.join(folder, f), ls)    folders = filter(lambda f: path.isdir(f), ls)    map(lambda x: rmdir(x), folders)谢谢!编辑:删除了第一个映射末尾的额外括号,用于使用语句list(map(...))进行调试print已移至path.join()上方行path.isdir()将问题的标题从“...FP 风格的 Python 3”更改为,因为正如评论中指出的那样,这不是 FP 的正确实现和应用。
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

os.rmdir只删除空目录,因此在正确且最小的实现中,在功能风格中没有什么可做的:


import errno

import os



def cleanup(folder):

    for name in os.listdir(folder):

        try:

            os.rmdir(os.path.join(folder, name))

        except OSError as e:

            if e.errno != errno.ENOTEMPTY:

                raise


查看完整回答
反对 回复 2023-09-19
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信