Как оценить двойную звездочку (звездочку) в пути? - PullRequest
0 голосов
/ 11 ноября 2018

Любая двойная звездочка в пути означает все подкаталоги .

Теперь, если у меня есть путь, подобный этому a/b/c/**/*.txt Это означает, что мне нужны все файлы во всех подкаталогах вc.Как получить это в Python?

1 Ответ

0 голосов
/ 11 ноября 2018

Использование 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/']

EDIT: Для питона 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))
...