Python 目录中和目录下的文件的Glob

Python 目录中和目录下的文件的Glob,python,glob,Python,Glob,我知道我可以通过glob.glob(“dir/*”)获取目录的即时内容。我还可以使用类似于glob.glob(“dir/***”)的方法反复获取子目录的所有内容,但这不会包含dir/的直接内容。有没有什么全球模式可以让我把两者结合起来;dir/中的所有内容都是递归的吗 编辑: 如果我在这里太难了,我正在编写一个setup.py脚本,希望将整个目录作为package\u data包含在内。我目前正在做package_data=[“resources/*”,“resources/****”],但这对

我知道我可以通过
glob.glob(“dir/*”)
获取目录的即时内容。我还可以使用类似于
glob.glob(“dir/***”)的方法反复获取子目录的所有内容,但这不会包含
dir/
的直接内容。有没有什么全球模式可以让我把两者结合起来;
dir/
中的所有内容都是递归的吗

编辑:
如果我在这里太难了,我正在编写一个
setup.py
脚本,希望将整个目录作为
package\u data
包含在内。我目前正在做
package_data=[“resources/*”,“resources/****”]
,但这对我来说似乎有点奇怪…

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

glob.glob('dir/**/*', recursive=True)
问题是,如果没有
recursive=True
glob
将把
**
(递归glob)模式视为通常的
*
(零个或多个字符),并将匹配
目录下的任何文件。当您传递参数时,
**
将被特殊处理,即作为递归全局模式


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

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

有趣!
recursive=True
参数确实引入了
dir/
的内容,但是它的行为对于
dir/***
案例来说似乎很奇怪
glob(“dir/**”,recursive=True)
似乎是最自然的(也很有效)。无论哪种方式,这都在
setup.py
中用于指定
package\u data
,因此我无法准确地传递
recursive
参数。@youngmit您的最终计划是什么?你想要什么文件?在
dir
和一些子目录(它们的名字是什么)下,我有一个名为
resources/
的目录。我想要它的全部内容。现在我正在做
package_data=[“resources/*”,“resources/****”]
,但这似乎是unnatural@youngmit检查此项:将递归的
glob
放入
package\u文件中
func。