python glob apply wildcard仅在某些目录中搜索

时间:2018-08-09 21:46:50

标签: python python-3.x glob

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

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

我尝试了以下各种变化:

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

例如:

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

但是它似乎不起作用。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果只有两个目录可搜索 您可以在每个目录上分别使用glob并将结果连接起来:

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

答案 1 :(得分:1)

这是您的解决方案-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']