打印包含相同子文件夹的所有文件夹中哪些子文件夹为空?

用户名

我有一个像这样的文件夹A:

A>>(B,C,D)(subfolders)>>both B,C and D have folders 1,2,3 each.

在这种情况下,B,C和D中的子文件夹'3'恰好为空。

您如何检查和打印哪个文件夹在所有文件夹中都为空,例如使其搜索并打印数字“ 3”,因为它是所有文件夹B,C和D中唯一的子文件夹?

我试过的代码:

for i in glob.iglob('**/Desktop/A/**' ,recursive = True):
    if not os.listdir(i):
        print(f'{i} is empty everywhere' + '\n')

这是行不通的。

所有文件夹都具有相同的子文件夹(名称),但是其中一些是空的。我需要在所有这些文件夹中找到哪个为空并进行打印。

博菲

我们需要os模块中的两个功能

from os import walk
from os.path import join

我们需要一个起点

dir = '/your/top/directory'

walk返回一个生成器,在每个步骤上对其进行迭代,我们拥有当前目录的路径,目录列表和我们不想迭代的文件列表,但仅对当前目录中的目录列表感兴趣,因此

dirs_l1 = next(walk(dir))[1]

请注意,上面提到的处理发电机并不是太浪费。

现在,我们在级别1的子目录(l1 sd,根目录中包含的sd)上有一个内部循环,以创建级别2的目录集的列表,将其解压缩并传递给set.intersection,这样dirs_l2我们最终有了一个集合级别1的每个目录中存在的所有级别2的所有目录中的

dirs_l2 = set.intersection(*[set(next(walk(join(dir, d)))[1]) for d in dirs_l1])

我们对每个l1 sd中存在的这些内部目录进行循环,并使用all内置函数检查每个l1 sd中所有l2 sd是否为空,在这种情况下,我们将打印始终为空的l2子目录的名称

for d2 in dirs_l2:
    if all(next(walk(join(dir, d1, d2)))[1:] == ([],[]) for d1 in dirs_l1):
        print(d2)

一个例子

$ cat A.py
from os import walk
from os.path import join
dir = './A'
dirs_l1 = next(walk(dir))[1]
dirs_l2 = set.intersection(*[set(next(walk(join(dir, d)))[1]) for d in dirs_l1])
for d2 in dirs_l2:
    if all(next(walk(join(dir, d1, d2)))[1:] == ([], []) for d1 in dirs_l1): print(d2)
$ tree A
A
├── A
│   ├── 1
│   │   └── a
│   ├── 2
│   │   └── b
│   └── 3
├── B
│   ├── 1
│   │   └── a
│   ├── 2
│   │   └── b
│   └── 3
├── C
│   ├── 1
│   │   └── a
│   ├── 2
│   │   └── b
│   └── 3
└── D
    ├── 1
    │   └── a
    ├── 2
    │   └── b
    └── 3
$ python A.py 
3
$ 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

压缩包含子文件夹的文件夹

列出文件夹中的所有文件以及子文件夹

列出文件夹中的所有文件ID(无子文件夹)

Gulp-定位文件夹及其子文件夹中的所有文件

.docker忽略所有子文件夹,但不忽略文件夹本身中的文件

如何使用.gitignore忽略文件夹中的所有子文件夹

Inno Setup:为文件夹及其子文件夹中的所有文件动态添加组件

PowerShell脚本以打印所有子文件夹

将文件复制到文件夹和所有子文件夹中

导出到txt哪些子文件夹为空?

遍历文件夹和子文件夹中的所有文件并获取创建日期

如何最好地删除文件夹及其子文件夹中的所有文件

如何在ckfinder中显示所有文件夹,子文件夹和文件

删除文件夹及其子文件夹中的所有文件

读取文件夹和子文件夹中的所有文件-进度和大小

将子文件夹中的所有文件移动到父文件夹

批。批量重命名文件夹和所有子文件夹中的文件

将文件夹中的所有子文件夹压缩为单个zip文件

将子文件夹中的所有文件移动到父文件夹

如何检查所有文件夹和子文件夹是否都不为空?

如何删除文件夹中除最新X子文件夹以外的所有子文件夹?

递归清除其中没有文件的文件夹中的所有文件夹和子文件夹

确定指定文件夹路径中的子文件夹是否为空

文件夹中的tar + gz文件,不放入所有子文件夹中

列出R中没有子文件夹的文件夹中的所有文件

删除所有子文件夹中的`target`文件夹

Gitignore用于文件夹和子文件夹中的所有文件

如何忽略提名文件夹中的_vti_cnf和_vti_pvt文件夹以及提名文件夹的所有子文件夹?

Windows 中文件夹及其子文件夹中的所有文件的列表

TOP 榜单

热门标签

归档