我知道我可以使用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
会将**
(递归glob)模式视为通常的*
(零个或多个字符),并将匹配dir/<subdir>/
下的所有文件。通过参数时,**
被特殊对待,即作为递归glob模式。
此外,如果您的目的只是迭代文件,则最好使用iglob
获取迭代器而不是列表:
glob.iglob('dir/**/*', recursive=True)