шаблон глобуса PYTHON — проверьте, соответствует ли шаблон заданным путям

#python #python-3.x #glob

Вопрос:

Привет, ребята, у меня есть список с шаблонами глобусов в Json :

 {
    "Project/*",
    "Sales",
    "Test"
}
 

И у меня есть пути, сохраненные в виде строки в массиве с именем log_paths, они могут выглядеть так:

 [
    "Project/component_x/doc/doc.rst",
    "Project/component_y/doc/doc.rst",
    "Project/component_z/doc/doc.rst",
    "Sales/doc/doc.rst",
    "Sales/doc/architecture.pml",
    "Test/test_cases/test.py",
    "Test/test2020/test2020.py",
]
 

Я хочу проверить, соответствует ли мой шаблон глобуса моим путям.

Если это совпадение, я хочу сохранить только начало, как в json, но вместо этого * я тоже хочу часть пути.

только сохранить:

 Project/component_x
Project/component_y
Project/component_z

Sales
Sales

Test
Test
 

Возможно ли это?

Ответ №1:

 import glob
for name in glob.glob('Project/*'):
    print name

for a in glob.glob('Sales'):
    print 'Sales'

for b in glob.glob('Test'):
    print 'Test'
 

изменить: список в лог_путях

 import glob
for pat in log_paths:
    for x in glob.glob(pat):
        print x
 

Для чего-нибудь более необычного я рекомендую вам научиться использовать re регулярное выражение для извлечения части пути к файлу, которую вы действительно хотели. glob не предназначен для этого

Комментарии:

1. следует добавить, что Project/* глобус вернет только первый поддир без рекурсии, так что он уже соответствует тому, что вы хотели

2. Могу ли я сделать это, фактически не написав glob.glob(‘Проект/*)? Потому что это должно быть общим, оно всегда может измениться. Я подумал о повторении json. И мои пути сохранены в переменной «log_path», я отредактирую часть вопроса

3. И у меня есть вопрос, где я сейчас ищу спички? на моем рабочем месте? Я не могу захотеть заглянуть в эти пути входа и посмотреть, есть ли какое-либо совпадение

4. хорошо, если ваш массив log_paths содержит относительные пути, откуда когда — либо выполняется ваш скрипт. вы можете добавить путь к каталогу журнала и сделать его абсолютным путем