Форум сайта python.su
Хорошо. Так как test_function будет выглядеть? Я хочу оставить елементы списка по маске типа *abc* в любом месте названия файла.
Офлайн
> Использую следующую функцию для построения списка вообще всех файлов:
Зачем он тебе? Создай для обхода каталогов рекурсивную функцию, фильтруй файлы в каждом подкаталоге и сразу их копируй.
Вот тебе пример рекурсивного копирования. Фильтрацию сам делай.
http://python.su/forum/topic/5393/?page=1#post-34988
Отредактировано Rodegast (Март 26, 2013 15:05:04)
Офлайн
evgen34
Хорошо. Так как test_function будет выглядеть? Я хочу оставить елементы списка по маске типа *abc* в любом месте названия файла.
def test_function(path): #получить имя return #'abc' содержится в имени
Офлайн
Rodegast, спасибо, ты помог со вторым вопросом - теперь я знаю как копировать эти файлы.
Только я так и не понял, как организовать фильтрацию. О filter() нашел только недоступную для моего понимания информацию, документация тоже очень скудная и на английском. Подкинули бы мне пример, чтобы я своими глазами увидел.
Как, например, в списке
['Волга','Гантели','гараж','вертолет']
Офлайн
filter(lambda x: x.upper().find(u"ГА") > -1,[u'Волга',u'Гантели',u'гараж',u'вертолет'])
Офлайн
Похоже ТС нечто такое хотел:
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)
Офлайн
Rodegast,pyuser, СПАСИБА!
Офлайн
evgen34СПАСИБА на этом форуме выражается в нажатии зеленой кнопочки со знаком плюсика.
Rodegast,pyuser, СПАСИБА!
Офлайн
Это само собой
Офлайн
evgen34
Как, например, в спискеоставить только те, в которых содержится сочетание букв ‘га’ в любом регистре.['Волга','Гантели','гараж','вертолет']
>>> import re >>> >>> lst = ['Волга','Гантели','гараж','вертолет'] >>> >>> pat = re.compile(r'га', re.I) >>> out = list(filter(pat.search, lst)) >>> print(out) ['Волга', 'Гантели', 'гараж'] >>>
Отредактировано py.user.next (Март 28, 2013 10:42:06)
Офлайн