Найти - Пользователи
Полная версия: Поиск файлов по папкам с использованием фильтра
Начало » Центр помощи » Поиск файлов по папкам с использованием фильтра
1 2
evgen34
Хорошо. Так как test_function будет выглядеть? Я хочу оставить елементы списка по маске типа *abc* в любом месте названия файла.
Rodegast
> Использую следующую функцию для построения списка вообще всех файлов:

Зачем он тебе? Создай для обхода каталогов рекурсивную функцию, фильтруй файлы в каждом подкаталоге и сразу их копируй.

Вот тебе пример рекурсивного копирования. Фильтрацию сам делай.
http://python.su/forum/topic/5393/?page=1#post-34988
Shaman
evgen34
Хорошо. Так как test_function будет выглядеть? Я хочу оставить елементы списка по маске типа *abc* в любом месте названия файла.
def test_function(path):
    #получить имя
    return #'abc' содержится в имени
Думаю, ты сам справишься.

evgen34
Rodegast, спасибо, ты помог со вторым вопросом - теперь я знаю как копировать эти файлы.
Только я так и не понял, как организовать фильтрацию. О filter() нашел только недоступную для моего понимания информацию, документация тоже очень скудная и на английском. Подкинули бы мне пример, чтобы я своими глазами увидел.
Как, например, в списке
['Волга','Гантели','гараж','вертолет']
оставить только те, в которых содержится сочетание букв ‘га’ в любом регистре.
Rodegast
filter(lambda x: x.upper().find(u"ГА") > -1,[u'Волга',u'Гантели',u'гараж',u'вертолет'])
pyuser
Похоже ТС нечто такое хотел:
import os, fnmatch
def locate(pattern, root=os.curdir):
    for path, dirs, files in os.walk(os.path.abspath(root)):
        for filename in fnmatch.filter(files, pattern):
            yield os.path.join(path, filename)
# пример использования
for fname in locate("*abc*"):
    print(fname)
evgen34
Rodegast,pyuser, СПАСИБА!
FishHook
evgen34
Rodegast,pyuser, СПАСИБА!
СПАСИБА на этом форуме выражается в нажатии зеленой кнопочки со знаком плюсика.
evgen34
Это само собой
py.user.next
evgen34
Как, например, в списке
['Волга','Гантели','гараж','вертолет']
оставить только те, в которых содержится сочетание букв ‘га’ в любом регистре.
>>> import re
>>> 
>>> lst = ['Волга','Гантели','гараж','вертолет']
>>> 
>>> pat = re.compile(r'га', re.I)
>>> out = list(filter(pat.search, lst))
>>> print(out)
['Волга', 'Гантели', 'гараж']
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB