我有一系列包含文件的子目录:
/cars/ford/escape/sedan/
/cars/ford/escape/coupe/
/cars/ford/edge/sedan/
/cars/ferrari/testarossa/
/cars/kia/soul/coupe/
等等。
我想使用 glob(在 Python 中)从根目录 /cars/
获取所有这些
terminal子目录路径,但不包含其中的任何文件,也不包含子目录的任何父目录。每个目录仅包含文件,没有其他子目录。
我尝试使用
glob("**/")
,但这也会返回 /cars/ford/
、/cars/ford/escape/
、/cars/ford/edge
、/cars/ferrari/
等。我不想要这些。
我还尝试使用
rglob("*/")
但这也会返回终端子目录中的所有文件。
我可以通过通配文件并从其父母那里制作一组来获得我需要的东西,但我觉得必须从全局方面对此有一个优雅的解决方案。不幸的是,我似乎无法找到合适的搜索词来发现它。谢谢!
glob
是这项工作的错误工具。 os.walk()
及其较新的子项是首选。
假设您使用的是足够新的 Python 来支持
pathlib.Path.walk()
:
import pathlib
def terminal_dirs(parent):
for root, dirs, files in pathlib.Path(parent).walk():
if not dirs:
yield root