递归测试文件夹是否完全为空的最佳方法?

时间:2018-08-07 18:29:28

标签: python recursion directory is-empty

测试文件夹,其子文件夹,所有子文件夹等是否为空的最Python方式是什么?我知道os.listdir()并提供了以下功能,但似乎已经有一个标准功能(尽管几次搜索都没有)。

def is_empty(target_folder): #Recursively tests whether a folder is empty.
    import os
    if [i for i in os.listdir(target_folder) if not 
    os.path.isdir(os.path.join(target_folder,i))]:
        return False
    else:
        return all([is_empty(os.path.join(target_folder,i)) for i in 
        os.listdir(target_folder) if 
        os.path.isdir(os.path.join(target_folder,i))])

1 个答案:

答案 0 :(得分:1)

您可以使用os.walk,它为您进行递归。

该函数生成一系列三元组。该元组的第一项是在您发送函数的文件夹(从您传递的文件夹开始)下的文件夹(目录)的名称。其他两项是子文件夹的列表,并直接位于第一项的文件夹中。

因此,只需调用os.walk并遍历生成的三元组即可。任何在第二项和第三项中都有空列表的元组将以空文件夹名称作为第一项。