目录以下的文件的范围

问题描述 投票:1回答:1

我知道我可以使用glob.glob("dir/*")获取目录的立即内容。我还可以通过类似glob.glob("dir/**/*")的方式来获得子目录的所有内容,但这将不包含dir/的直接内容。是否有任何可以让我将两者结合的模式? dir/内部的所有内容,是否递归?

编辑:万一我在这里XY probleming太难了,我正在研究setup.py脚本,并希望将整个目录都包含为package_data。我目前正在执行package_data=["resources/*", "resources/**/*"],但对我来说似乎有点奇怪...

python glob
1个回答
1
投票

glob模式dir/**/*可以递归匹配dir目录和子目录下的文件;您需要传入recursive=True命名参数:

glob.glob('dir/**/*', recursive=True)

问题是,如果没有recursive=Trueglob会将**(递归glob)模式视为通常的*(零个或多个字符),并将匹配dir/<subdir>/下的所有文件。通过参数时,**被特殊对待,即作为递归glob模式。


此外,如果您的目的只是迭代文件,则最好使用iglob获取迭代器而不是列表:

glob.iglob('dir/**/*', recursive=True)
© www.soinside.com 2019 - 2024. All rights reserved.