如何计算路径中的双星号(星号)?

时间:2018-11-11 16:35:28

标签: python-3.x path wildcard

路径中的任何双星号都表示所有sub-directories

现在,如果我有一个类似a/b/c/**/*.txt的路径,这意味着我需要c下所有子目录下的所有文件。如何在python中获得它?

1 个答案:

答案 0 :(得分:0)

使用glob.

来自文档:

例如,考虑一个包含以下文件的目录:1.gif,2.txt,card.gif和仅包含文件3.txt的子目录子目录。 glob()将产生以下结果。请注意如何保留路径的所有前导组件。

>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
>>> glob.glob('**/*.txt', recursive=True) #python 3.5+
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']

编辑: 对于python 3.4

对于较旧的Python版本,请使用os.walk递归遍历目录,并使用fnmatch.filter与一个简单表达式进行匹配:

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('src'):
    for filename in fnmatch.filter(filenames, '*.txt'):
        matches.append(os.path.join(root, filename))