我到处寻找这个答案但找不到。
我正在尝试编写一个脚本来搜索特定的子文件夹,然后检查它是否包含任何文件,如果包含,则写出该文件夹的路径。我已经弄清楚了子文件夹搜索部分,但检查文件却难倒了我。
我发现了有关如何检查文件夹是否为空的多个建议,并且我尝试修改脚本来检查文件夹是否不为空,但我没有得到正确的结果。
这是最接近的脚本:
for dirpath, dirnames, files in os.walk('.'):
if os.listdir(dirpath)==[]:
print(dirpath)
这将列出所有空的子文件夹,但如果我尝试将其更改为:
if os.listdir(dirpath)!=[]:
print(dirpath)
它将列出所有内容,而不仅仅是那些包含文件的子文件夹。
如果有人能指出我正确的方向,我将非常感激。
如果这很重要的话,这是针对 Python 3.4 的。
感谢你给与我的帮助。
添加到@Jon Clements的pathlib答案中,我想检查pathlib文件夹是否为空但不创建集合:
from pathlib import Path
# shorter version from @vogdb
is_empty = not any(Path('some/path/here').iterdir())
# similar but unnecessary complex
is_empty = not bool({_ for _ in Path('some/path/here').rglob('*')})
vogdb 方法尝试迭代给定目录中的所有文件。如果没有文件,any() 将为 False。我们否定它not
所以 is_empty 是True
如果没有文件并且False
如果文件。
sorted(Path(path_here).rglob('*')) 返回已排序的 PosixPah 项目的列表。如果没有项目,则返回一个空列表,即 False。因此,如果路径为空,is_empty 将为 True;如果路径有内容,则 is_empty 将为 false
Similar idea results {} and [] gives the same:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)