Динамические директивы в Vue

matches.extend([fn for fn if not filename in ignore_files])

Должен сделать трюк для простых имен файлов, для игнорирования шаблонов что-то вроде:

def reject(filename, filter):
    """ Takes a filename and a filter to reject files that match."""
    if len(filter)==0:
         return False
    else:
         return fnmatch.fnmach(filename, filter[0]) or reject(filename, filter[1:])

matches.extend([os.path.join(root, fn) for fn in filenames if not reject(fn, ignore_files)])

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

Вы также можете попробовать что-то вроде:

filenames = set(filenames)  # convert to a set
for filter in ignore_files:
   filenames = filenames - set(fnmatch.filter(filenames, filter)) # remove the matches
matches.extend([os.path.join(root, fn) for fn in filenames])  # Add to matches
0
задан Modermo 17 February 2019 в 22:42
поделиться