所有子文件夹都具有相同名称的相同文件夹。 我想检查示例中主文件夹内所有目录中哪些名为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")
答案 0 :(得分:0)
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.walk
和os.listdir
)而无法令人满意
为避免扫描两次,您必须将结果存储在dictionary / defaultdict中,并对每个目录中的文件进行计数,过滤其中没有文件的文件。更复杂。仅在磁盘性能很重要时才这样做。