在具有特定名称的子文件夹中查找空文件夹?

2024-04-25 04:52:06 发布

您现在位置:Python中文网/ 问答频道 /正文

所有子文件夹都具有相同名称的相同文件夹。 我想检查主文件夹中所有目录中名为dbound的子文件夹是否为空,如示例所示。你知道吗

大约有一半的同名文件夹是空的。如何找出哪个? 我试过这个:

from glob import glob

for i in  glob(r'C:\Users\user\Desktop\files1' + '**/*/*/*', recursive=True):
    print (i)

    if os.listdir(i) == []:
        print ("Empty")

Tags: infromimport目录文件夹名称示例for
1条回答
网友
1楼 · 发布于 2024-04-25 04:52:06

glob可以返回目录文件。在测试条目之前检查它是否是一个目录。要测试名称,请使用os.path.basename

if os.path.basename(i) == "dbound" and os.path.isdir(i) and not os.listdir(i):
    print ("{} is Empty".format(i))

我更喜欢os.walk(至少过滤掉目录,忽略文件):

for root,dirs,files in os.walk(r'C:\Users\user\Desktop\files1'):
   for d in dirs:
       if d=="dbound" and not os.listdir(os.path.join(root,d)):
           print("empty dbound: {}".format(os.path.join(root,d)))

这两种解决方案都有效,但不知何故并不令人满意,因为您要扫描磁盘两次(glob/os.walkos.listdir

为了避免扫描两次,您必须将结果存储在dictionary/defaultdict中,并对每个目录中的文件进行计数,过滤其中没有文件的文件。更复杂。只有在磁盘性能很重要时才这样做。你知道吗

相关问题 更多 >