Как преобразовать список в шаблон стиля glob в python

Мне нужно скопировать файлы, используя shutil copytree с определенным шаблоном. Шаблоны, которые у меня есть в виде списка. Я преобразовал список в строку, используя метод ниже, чтобы передать дерево копий ignore_pattern, как показано ниже.

def convert_list_to_str(pattern):
    patter = ','.join("'{0}'".format(x) for x in pattern)
    return patter

copytree(sourcedir, target_dir,ignore=ignore_patterns(pattr))

Если я жестко закодирую шаблон как ниже

copytree(sourcedir, target_dir,ignore=ignore_patterns('*.bat','*.jar')) 

Он работает нормально, здесь я не могу повторить шаблон, потому что при первом запуске он создаст папку. Поэтому мне нужно преобразовать список в шаблон glob, чтобы его можно было передать в качестве параметра. Но не знаю, как преобразовать список в шаблон глобуса.

Как этого добиться?

РЕДАКТИРОВАТЬ:

aa = ['*.bat','*.txt']
print(convert_list_to_str(aa))

Результат:

'*.bat','*.txt'

1 ответ

Решение

Вам не нужна функция list_to_str. Когда это говорит ignore_patterns(*patterns) в документах это означает, что функция принимает ноль или более аргументов. Так что вам нужно назвать это так:

copytree(sourcedir, target_dir,ignore=ignore_patterns(*pattern))

обратите внимание на * перед шаблоном, он преобразует ваш список в серию аргументов.

Вы можете узнать больше об операторах распаковки в python здесь: https://codeyarns.com/2012/04/26/unpack-operator-in-python/

Другие вопросы по тегам