python - Glob 查找目录中及目录下的文件

标签 python glob

我知道我可以使用 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/

相关文章:

python - pyCharm:强制导入行不会变灰

python - 如何在一张图中绘制多个折线图(overlay/groupby)

python - 将值动态传递给 Ansible list - Python

linux - Bash 脚本复制文件夹和内容而不需要一个文件

python - glob.glob 的意外输出

javascript - Eslint glob 在没有扩展的情况下无法工作

python - 如何在 Cython 中获得内存 View 列表?

python-sphinx - 从 toctree 隐藏特定文件?

bash - 改进 for 循环的执行

python - Google Maps API -地址到坐标(纬度,经度)