как реализовать glob.glob - PullRequest
       33

как реализовать glob.glob

1 голос
/ 24 сентября 2011

в настоящее время мой список кодов os.walk содержит все файлы во всех каталогах в указанном каталоге.

top = /home/bludiescript/tv-shows
        for dirpath, dirnames, filenames in os.walk(top):
               for filename in filenames:
                  print os.path.join([dirname, filename])

так, как я могу добавить

glob.glob(search)
search = self.search.get_text

для поиска шаблона, который я ввожу в gtk.Entry

или это что-то, что не будет работатьс моим текущим кодом

Ответы [ 2 ]

4 голосов
/ 24 сентября 2011

Вы не хотите glob, вы хотите fnmatch.

for dirpath, dirnames, filenames in os.walk(top):
    for filename in filenames:
        if fnmatch.fnmatch(filename, my_pattern):
            print os.path.join([dirname, filename])

glob выполняет часть работы, которую os.walk уже выполнила: исследует диск, чтобы найти файлы. fnmatch является чисто строковой операцией: соответствует ли это имя файла этому шаблону?

2 голосов
/ 24 сентября 2011

Вы не хотите glob.glob для этого;он проверяет имена в каталоге, который вы уже получили.Вместо этого используйте fnmatch.fnmatch, чтобы сопоставить ваш шаблон со списком имен путей, которые вы получили от os.walk (возможно, до добавления пути).

for filename in filenames:
    if fnmatch.fnmatch(filename, search):
        print os.path.join([dirname, filename])
...