fnmatch, как именно вы реализуете сопоставление любых символов в шаблоне seq - PullRequest
1 голос
/ 25 сентября 2011

так что у меня есть код os.walk

search = self.search.get_text()
top = '/home/bludiescript/tv-shows'
for dirpath, dirnames, filenames in os.walk(top):
  for filename in filenames:
    if fnmatch.fnmatch(filename, search)
      print os.path.join([dirpath, filename])

в документации на python показывает, что вы можете сопоставить любой набор символов с шаблоном [seq], но независимо от того, как я пытаюсь реализовать, это дает такую ​​ошибку или не дает результатов вообще.

так, что будет правильной реализацией, чтобы соответствовать последовательности машин в поиске, чтобы он распечатал файл или файлы, которые соответствуют

реализаций, которые я пробовал

if fnmatch.fnmatch(filename, [search]) error i got was typeerror unhasable type : 'list'
if fnmatch.fnmatch[filename, search] error i got was typeerror fnmatch function is not subscriptable
if fnmatch.fnmatch([filename, search]) error typeerror fnmatch takes two arguments  1 given
if fnmatch.fnmatch([filename], search) error typeerror expected string or buffer
if fnmatch.fnmatch([search], filename) error typeerror expected string or buffer 
if fnmatch.fnmatch(filename, search, [seq]) error nameerror global name seq not defined

if fnmatch.fnmatch(filename, '[search]')

ошибок нет, но результатов не найдено

поиск значений

привет, mkv, веселый 1, 2, 3, 4, 5, 6, 7 и т. Д ...

1 Ответ

6 голосов
/ 25 сентября 2011

fnmatch реализует синтаксис с подстановочными знаками оболочки Unix.Поэтому все, что вы можете ввести в команду ls (например), будет работать:

>>> fnmatch.fnmatch("qxx", "[a-z]xx")
True
>>> fnmatch.fnmatch("abc", "a??")
True
>>> fnmatch.fnmatch("abcdef", "a*f")
True
>>> fnmatch.fnmatch("abcdef", "a*[f-k]")
True

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

...