Например:
Код: Выделить всё
+-- pattern.py
+-- dir_a
| +-- pattern.py
| +-- dir_b
| | +-- pattern.py
Код: Выделить всё
glob_match('*.py', 'pattern.py') # -> True
glob_match('*.py', 'dir_a/pattern.py') # -> False
glob_match('dir_a/**/*.py', 'dir_a/pattern.py') # -> True
glob_match('dir_a/*.py', 'dir_a/dir_b/pattern.py') # -> False
glob_match('dir_a/**/*.py', 'dir_a/dir_b/pattern.py') # -> True
Я думаю, что могу понять, как это реализовать, но я бы поискал существующую реализацию. можно положиться
Спасибо!
Изменить Чтобы уточнить, glob_match, который я ищу, - это бит glob.glob(..., recursive=True), который выполняет сопоставление, без бита, выполняющего сканирование файловой системы. Другими словами, результат glob_match(pattern, rel_path) не должен зависеть от rel_path, указывающего на реальный файл или даже от наличия доступа к файловой системе.
- временно записать rel_path в файловую систему только для запуска glob_match было бы решением, но я бы предпочел этого не делать
- Я думал о том, чтобы раскопать реализацию в glob.glob, но поскольку он написан как итератор, это не намного проще, чем написать новый glob_match с нуля...
Подробнее здесь: https://stackoverflow.com/questions/669 ... b-patterns
Мобильная версия