python glob仅在某些目录中应用通配符进行搜索

python glob仅在某些目录中应用通配符进行搜索,python,python-3.x,glob,Python,Python 3.x,Glob,如何将通配符应用于glob以仅搜索特定目录中的文件 e、 我有这些文件夹AABC、AADE和存档。我只想运行glob来获取AABC和AADE中的所有json文件,而不是归档文件夹中的所有json文件 我尝试了以下不同的变体: json_files = glob.glob("**.json", recursive=True) 例如: json_files = glob.glob("AA**/**.json", recursive=True) 但它似乎不起作用。谢谢你的帮助。如果你只有两个目录要

如何将通配符应用于glob以仅搜索特定目录中的文件

e、 我有这些文件夹AABC、AADE和存档。我只想运行glob来获取AABC和AADE中的所有json文件,而不是归档文件夹中的所有json文件

我尝试了以下不同的变体:

json_files = glob.glob("**.json", recursive=True)
例如:

json_files = glob.glob("AA**/**.json", recursive=True)

但它似乎不起作用。谢谢你的帮助。

如果你只有两个目录要搜索 您可以在每个目录上单独使用glob并连接结果:

json_files = glob.glob("AABC/*.json", recursive=True) + glob.glob("AADE/*.json", recursive=True)

这是您的解决方案-
glob.glob('aa*/*.json'))

下面是一个测试:

vladimir@vladimir-hp /tmp $ mkdir aab
vladimir@vladimir-hp /tmp $ mkdir aac
vladimir@vladimir-hp /tmp $ mkdir a
vladimir@vladimir-hp /tmp $ touch aab/1.json
vladimir@vladimir-hp /tmp $ touch aac/2.json
vladimir@vladimir-hp /tmp $ touch a/3.json
vladimir@vladimir-hp /tmp $ python3 -c "import glob; print(glob.glob('aa*/*.json'))"
>>> ['aac/2.json', 'aab/1.json']

你说的归档文件夹是什么意思?@vishes\u shell一个名为“archive”的文件夹我觉得很傻,glob.glob(“AA**/**.json”,recursive=True)工作得很好,我在错误的目录中。但是@Vlad的答案甚至更好Hanks@taras,这将暂时奏效,但我相信在未来我会有更多folders@kouichi,因此您可以使用for循环目录列表并聚合数据。谢谢@Vlad,这很有效。这类似于linux风格的通配符