2016-02-20 3 views
0

Учитывая файл под названием SI 01130 TN 72 - 2016-02-19 в текущем рабочем каталоге, а также следующее:fnmatch.fnmatch() не обнаруживает нужный файл (или не обнаруживать ни вообще)

import os 
import fnmatch 

def matching_current_instruction_id_in_baseline(_id): 
    for _file in os.listdir('.'): 
     if fnmatch.fnmatch(_file, 'SI 01130 TN 72*'): 
      return file 
     else: 
      continue 
    return None 

Почему не следует забрать его (все они совпадают - это файл с именем «x», по какой-то причине).

In[50]: matching_current_instruction_id_in_baseline('SI 01130 TN 72') 
Out[50]: 'x 
+1

Не ответ, но glob был бы лучшим подходом, в частности иглобом, если вы просто хотите увидеть, есть ли какое-либо совпадение, ваше дальнейшее продолжение также является излишним. fnmatch также будет соответствовать строке, как указано, так что происходит что-то еще. –

+1

'return next (glob.iglob (" path_to/'SI 01130 TN 72 *' "), None)' будет делать все, что ваша текущая функция. –

+1

Вы работаете с переменной '_file', но затем возвращаете' файл'. Исправив это, он работает для меня. – jsfan

ответ

1

Вы итерация и тест _file, но вернуться file, который бывает встроенная функция в Python 2. Не знаю, почему он печатает 'x, но вот почему вы не видите, что вы ожидаете.