Python: имя файла содержит строку (metachar?)

Я использую os.walk(каталог), чтобы рекурсивно показать все файлы из этого каталога. Дело в том, что мне нужно показывать только те файлы, которые содержат запрашиваемую строку в своем имени, а также управлять метачарами.

Что у меня сейчас есть:

for root, subdirs, files in os.walk(dir1):
        for filename in files:
            if substring in filename:
                name_path = os.path.join(root,filename)
                list.insert(END, name_path)

Это хорошо работает, но если substring = *, так как у меня нет файлов, содержащих ' * ', мой список пуст.

Итак, как мне заставить это работать, если substring содержит метачар?

1 ответ

Решение

Я думаю, что вы ищете fnmatch:

https://docs.python.org/3/library/fnmatch.html

Вы можете использовать glob. Это очень удобно и похоже на команду find в Linux.

import glob
glob.glob("/home/user/*.txt")

Искать в нескольких подкаталогах

glob.glob("/home/user/*/*.txt")

или

glob.glob("/home/user/logs?.txt")
Другие вопросы по тегам