#python #recursion #glob
#python #рекурсия #глоб
Вопрос:
Я пытаюсь построить абсолютные пути к файлам с помощью glob, используя подстановочные знаки. Используя этот код.
list_of_files = glob.glob(globable_file_path, recursive=True)
Теперь я передаю этому список глобируемых путей к файлам. При таком формате это работает
?Z:level_1level_2***12345*.pdf
Но вышесказанное добавляет дополнительный уровень () каталога, и я не могу изменить родительский путь. Итак, я пробовал подобные вещи
?Z:level_1level_2**12345*.pdf
?Z:level_1level_2[**]12345*.pdf
?Z:level_1level_2**[12345]*.pdf
Но ни один из них не работает. Как я мог бы избежать добавления дополнительного уровня каталога, но глобально рекурсивно с использованием подстановочных знаков?
Документы показывают это
>>> glob.glob('**/*.txt', recursive=True)
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']
Что предполагает, что вам нужен дополнительный для рекурсивного поиска. Есть ли способ сделать это с помощью pathlib или os.path или какого-то трюка, о котором я не знаю?
Ответ №1:
Итак, это работает с использованием pathlib
from pathlib import Path
for path in Path(globable_file_path).rglob("*" str(log1) "*.pdf"):
list_of_files.append(path.__str__())
Я использовал этот __str__
метод для преобразования из WindowsPath
в строку.