我知道我可以使用 glob.glob("dir/*")
获取目录的直接内容。我还可以使用 glob.glob("dir/**/*")
等方式递归获取子目录的所有内容。 ,但这不会包含 dir/
的直接内容。是否有任何全局模式可以让我将两者结合起来? dir/
内的所有内容,递归?
编辑:
万一我是XY probleming这里太难了,我正在研究setup.py
脚本并希望将整个目录包含为 package_data
。我目前正在做package_data=["resources/*", "resources/**/*"]
,但这对我来说似乎有点奇怪......
最佳答案
你glob
图案dir/**/*
匹配dir
下的文件就可以了递归目录和子目录;您需要recursive=True
要传入的命名参数:
glob.glob('dir/**/*', recursive=True)
问题是,没有 recursive=True
, glob
将对待 **
(递归全局)模式如常*
(零个或多个字符)并将匹配 dir/<subdir>/
下的任何文件。当你传递参数时,**
被特殊对待,即作为递归全局模式。
此外,如果您的目的只是迭代文件,最好使用 iglob
获取迭代器而不是列表:
glob.iglob('dir/**/*', recursive=True)
关于python - Glob 查找目录中及目录下的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58646983/