#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 содержит относительные пути, откуда когда — либо выполняется ваш скрипт. вы можете добавить путь к каталогу журнала и сделать его абсолютным путем