Как преобразовать список в шаблон стиля 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/