Уведомления

Группа в Telegram: @pythonsu

#1 Май 13, 2012 12:47:31

Aleksandr
Зарегистрирован: 2012-05-09
Сообщения: 30
Репутация: +  -1  -
Профиль   Отправить e-mail  

Поиск файлов во всех поддирректориях указанной папки

def OnButton1Button(self, event):
        import os,glob
        self.listBox1.Clear()
        dir_ext = self.textCtrl1.GetValue()
        dir_ext = glob.glob(dir_ext)
        for file in dir_ext:
            if os.path.isfile(file):
                self.staticText1.SetLabel(file)
                self.listBox1.Append(file)                                                  
В интернетах написано что таким образом если указать путь вроде “/*” или “/*.*” (линукс) могут быть получены пути ко всем файлам во всех поддирректориях. А у меня результат 4 файла в корне(/ -это корневой каталог), и поддирректории не проверяются. Чтобы это исправить мне нужно чтото дописать или создавать отдельный список для найденных папок и по мере поиска брать из него пути, удалять взятые и добавлять найденные в папках пути к подпапкам?
Эдакий круговорот путей в одном списке.



Азь есмь свет

Офлайн

#2 Май 13, 2012 12:53:53

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Поиск файлов во всех поддирректориях указанной папки

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

Понял о чем вы. “> ls ./*” выведет все файлы и поддиректории. Так же может пригодиться os.walk.



Отредактировано fata1ex (Май 13, 2012 14:39:15)

Офлайн

#3 Май 13, 2012 14:00:12

Aleksandr
Зарегистрирован: 2012-05-09
Сообщения: 30
Репутация: +  -1  -
Профиль   Отправить e-mail  

Поиск файлов во всех поддирректориях указанной папки

fata1ex
Понял о чем вы. “> ls ./*” выведет все файлы и поддиректории. Так же может пригодится os.walk.
Уууууу….os.Walk это круто..Спасибо, чую изучение этого
на пару тройку дней затянется.



Азь есмь свет

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version